home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #301 (1994)(Rhein-Sieg-Soft).zip / Franz PD Disk #301 (1994)(Rhein-Sieg-Soft).adf / AmBOS / AmBOS_V2.6c.AMOS.pp / AmBOS_V2.6c.AMOS / AmBOS_V2.6c.amosSourceCode
AMOS Source Code  |  1994-01-21  |  96KB  |  4,091 lines

  1. '* ------------------------------------
  2. '* AmBOS V2.6c 
  3. '* 
  4. '* (r)07/01/1994 by Volker Stepprath 
  5. '* (c)1993 by Testaware <Public Domain>
  6. '* 
  7. '* (p)AMOS V1.31 & ACmp V1.0 
  8. '* (c)1991 by Europress Software 
  9. '* ------------------------------------
  10. '
  11. Set Buffer 56
  12. '
  13. '**** Variablen installieren 
  14. Dim XDIRA$(200),XSTATUSA(200)
  15. Dim XDIRB$(200),XSTATUSB(200)
  16. Dim X09NAME$(9),X09$(9),XMEND$(3,14)
  17. Global XDIRA$(),XSTATUSA(),XPOSA,XANZA#,XLENA#,XBARA#,XBARPOSA#
  18. Global XDIRB$(),XSTATUSB(),XPOSB,XANZB#,XLENB#,XBARB#,XBARPOSB#
  19. Global XDISKNAMEA$,XDISKNAMEB$,X09NAME$(),X09$(),X09A,X09B
  20. Global XMEND$(),XMENABCD,XFILE$,XSD,XPROTECT,XHELP
  21. X09A=0
  22. X09B=1
  23. XDISKNAMEA$="SYS:"
  24. XDISKNAMEB$="SYS:"
  25. For I=0 To 3
  26.    XMEND$(I,14)="CREATE="
  27. Next I
  28. '
  29. '**** AmBOS installieren       
  30. Request Off 
  31. Set Dir 30,""
  32. Key Speed 10,2
  33. _INSTALLAMBOS
  34. _INSTALLSCREEN
  35. Amos To Front 
  36. '
  37. If Exist("SYS:S/.ambosmenu")
  38.    Open In 1,"SYS:S/.ambosmenu"
  39.       For I=0 To 3
  40.          For I2=0 To 13
  41.             Input #1,XMEND$(I,I2)
  42.          Next I2
  43.       Next I
  44.    Close 1
  45. End If 
  46. '
  47. '**** Hauptschleife
  48. Do 
  49.    Ink 1,0
  50.    Clear Key 
  51.    Every 3000 Proc _MEMTIME
  52.    _MEMTIME
  53.    Repeat 
  54.       MK=Mouse Click
  55.       X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  56.       TASTE=Asc(Upper$(Inkey$))
  57.       If XHELP=0
  58.          XHELP=Scancode
  59.          If XHELP=95
  60.             _TXT["Please choose option you want to explain <Links=Deutsch / Right=English> !"]
  61.          Else 
  62.             XHELP=0
  63.          End If 
  64.       End If 
  65.       If TASTE=13 Then _INSTALLSCREEN
  66.       If TASTE=28
  67.          Ink 0 : Bar 342,31 To 638,177
  68.          For I=0 To 200
  69.             XDIRB$(I)=XDIRA$(I)
  70.             XSTATUSB(I)=XSTATUSA(I)
  71.          Next I
  72.          XDISKNAMEB$=XDISKNAMEA$
  73.          XPOSB=XPOSA : XANZB#=XANZA#
  74.          XLENB#=XLENA# : XBARB#=XBARA#
  75.          XBARPOSB#=XBARPOSA#
  76.          X09$(X09B)=X09$(X09A)
  77.          X09NAME$(X09B)=X09NAME$(X09A)
  78.          _SHOWDIR[1]
  79.          _SHOWNAME[1]
  80.          _SCROLLBAR[1]
  81.       End If 
  82.       If TASTE=29
  83.          Ink 0 : Bar 1,31 To 297,177
  84.          For I=0 To 200
  85.             XDIRA$(I)=XDIRB$(I)
  86.             XSTATUSA(I)=XSTATUSB(I)
  87.          Next I
  88.          XDISKNAMEA$=XDISKNAMEB$
  89.          XPOSA=XPOSB : XANZA#=XANZB#
  90.          XLENA#=XLENB# : XBARA#=XBARB#
  91.          XBARPOSA#=XBARPOSB#
  92.          X09$(X09A)=X09$(X09B)
  93.          X09NAME$(X09A)=X09NAME$(X09B)
  94.          _SHOWDIR[0]
  95.          _SHOWNAME[0]
  96.          _SCROLLBAR[0]
  97.       End If 
  98.       If TASTE>48 and TASTE<57
  99.          MK=True
  100.          If TASTE<53
  101.             X=544+(TASTE-48)*20 : Y=210
  102.          Else 
  103.             X=544+(TASTE-52)*20 : Y=217
  104.          End If 
  105.       End If 
  106.       Clear Key 
  107.       Multi Wait 
  108.    Until MK
  109.    Every Off 
  110.    _CHECKSELECT[MK,X,Y]
  111.    '
  112. Loop 
  113. '
  114. '**** Mausabfrage
  115. Procedure _CHECKSELECT[MK,X,Y]
  116. '**** Datenfelder scrollen 
  117.    If X>301 and X<317 and Y>151 and Y<165
  118.       _G[301,152,317,164,1]
  119.       While Mouse Key : _SCROLLDOWN[0] : Wend 
  120.       _G[301,152,317,164,0]
  121.    End If 
  122.    If X>301 and X<319 and Y>165 and Y<179
  123.       _G[301,166,317,178,1]
  124.       While Mouse Key : _SCROLLUP[0] : Wend 
  125.       _G[301,166,317,178,0]
  126.    End If 
  127.    If X>322 and X<339 and Y>151 and Y<165
  128.       _G[322,152,338,164,1]
  129.       While Mouse Key : _SCROLLDOWN[1] : Wend 
  130.       _G[322,152,338,164,0]
  131.    End If 
  132.    If X>321 and X<339 and Y>165 and Y<179
  133.       _G[322,166,338,178,1]
  134.       While Mouse Key : _SCROLLUP[1] : Wend 
  135.       _G[322,166,338,178,0]
  136.    End If 
  137.    If X>300 and X<318 and Y>29 and Y<151
  138.       _SCROLLPAGE[0,Y]
  139.    End If 
  140.    If X>321 and X<339 and Y>29 and Y<151
  141.       _SCROLLPAGE[1,Y]
  142.    End If 
  143.    If X>300 and X<318 and Y>179 and Y<193
  144.       _G[301,180,317,192,1]
  145.       _SCROLLTOPBUTTOM[0,MK]
  146.       _G[301,180,317,192,0]
  147.    End If 
  148.    If X>321 and X<339 and Y>179 and Y<193
  149.       _G[322,180,338,192,1]
  150.       _SCROLLTOPBUTTOM[1,MK]
  151.       _G[322,180,338,192,0]
  152.    End If 
  153.    '
  154. '**** Device 
  155.    If Y>14 and Y<28
  156.       If X>0 and X<53
  157.          _G[0,15,52,27,1] : _GETDEVICES[0]
  158.       End If 
  159.       If X>366 and X<420
  160.          _G[367,15,419,27,1] : _GETDEVICES[1]
  161.       End If 
  162.       '
  163. '**** Update 
  164.       If X>53 and X<105
  165.          _G[55,15,107,27,1] : _LESEDISK[XDISKNAMEA$,0]
  166.       End If 
  167.       If X>421 and X<475
  168.          _G[422,15,474,27,1] : _LESEDISK[XDISKNAMEB$,1]
  169.       End If 
  170.       '
  171. '**** Parent 
  172.       If X>109 and X<163
  173.          _G[110,15,162,27,1]
  174.          If XDISKNAMEA$<>""
  175.             If Exist(XDISKNAMEA$)
  176.                Dir$=XDISKNAMEA$ : Parent : XDISKNAMEA$=Dir$
  177.                _LESEDISK[XDISKNAMEA$,0]
  178.             End If 
  179.          End If 
  180.       End If 
  181.       If X>475 and X<527
  182.          _G[477,15,529,27,1]
  183.          If XDISKNAMEB$<>""
  184.             If Exist(XDISKNAMEB$)
  185.                 Dir$=XDISKNAMEB$ : Parent : XDISKNAMEB$=Dir$
  186.                 _LESEDISK[XDISKNAMEB$,1]
  187.             End If 
  188.          End If 
  189.       End If 
  190.       '
  191. '**** All / Clear
  192.       If X>164 and X<218
  193.          _G[165,15,217,27,1] : _ALL[0]
  194.       End If 
  195.       If X>219 and X<273
  196.          _G[220,15,272,27,1] : _CLEAR[0]
  197.       End If 
  198.       If X>532 and X<585
  199.          _G[532,15,584,27,1] : _ALL[1]
  200.       End If 
  201.       If X>586 and X<640
  202.          _G[587,15,639,27,1] : _CLEAR[1]
  203.       End If 
  204.       '
  205. '**** 0 - 9 / <- * ->
  206.       If X>273 and X<299
  207.          If MK=1 : Add X09A,1,0 To 9 Else Add X09A,-1,0 To 9 : End If 
  208.          _G[275,15,298,27,1] : _X09AB[0] : _SCROLLBAR[0] : _G[275,15,298,27,0]
  209.       End If 
  210.       If X>342 and X<365
  211.          If MK=1 : Add X09B,1,0 To 9 Else Add X09B,-1,0 To 9 : End If 
  212.          _G[341,15,364,27,1] : _X09AB[1] : _SCROLLBAR[1] : _G[341,15,364,27,0]
  213.       End If 
  214.       If X>300 and X<339
  215.          _G[301,15,338,27,1] : _SOURCEDEST : _G[301,15,338,27,0]
  216.       End If 
  217.    End If 
  218.    '
  219. '**** Devices angeben
  220.    If Y>180 and Y<192
  221.       If X>3 and X<297
  222.          _G[0,180,298,192,1] : _G[1,181,297,191,0]
  223.          _TXT["Enter device:"] : _EINGABE[15]
  224.          If XFILE$<>""
  225.             If Exist(XFILE$)
  226.                Dir$=XFILE$ : XDISKNAMEA$=Dir$ : _LESEDISK[XDISKNAMEA$,0]
  227.             Else 
  228.                _TXT["Device not available !"]
  229.             End If 
  230.          End If 
  231.          _G[0,180,298,192,0] : _G[1,181,297,191,1]
  232.       End If 
  233.       If X>343 and X<637
  234.          _G[341,180,639,192,1] : _G[342,181,638,191,0]
  235.          _TXT["Enter device:"] : _EINGABE[15]
  236.          If XFILE$<>""
  237.             If Exist(XFILE$)
  238.                 Dir$=XFILE$ : XDISKNAMEB$=Dir$ : _LESEDISK[XDISKNAMEB$,1]
  239.             Else 
  240.                _TXT["Device not available !"]
  241.             End If 
  242.          End If 
  243.          _G[341,180,639,192,0] : _G[342,181,638,191,1]
  244.       End If 
  245.    End If 
  246. '
  247. '**** Files selektieren
  248.    If Y>31 and Y<178
  249.       If X>0 and X<299
  250.          _SELEKTION[0,MK,Y]
  251.       End If 
  252.       If X>340 and X<640
  253.          _SELEKTION[1,MK,Y]
  254.       End If 
  255.    End If 
  256.    '
  257. '**** Men�optionen 
  258.    If Y>194 and Y<208
  259.       X=X/80
  260.       _G[X*80+1,195,X*80+78,207,1]
  261.       If XHELP=0
  262.          If XMENABCD=0
  263.             On X+1 Proc _COPY,_COPYTO,_MOVE,_MOVETO,_DELETE,_MAKEDIR,_RENAME,_PROTECT
  264.          End If 
  265.          If XMENABCD=1
  266.             On X+1 Proc _SORT,_MERGE,_COMPARE,_SAVEMEM,_PACK,_UNPACK,_CHECKVEC,_CLEARSYS
  267.          End If 
  268.          If XMENABCD=2
  269.             On X+1 Proc _VALUE,_COLOURS,_GETDAY,_OPENWB,_CLOSEWB,_CLOSE,_ABOUT,_EDITOR
  270.          End If 
  271.          If XMENABCD=3
  272.             On X+1 Proc _SETPRT,_PRINT,_FILEINFO,_HJOIN,_CLI,_EXIT
  273.          End If 
  274.          If XMENABCD>3
  275.             _CALLCOMMAND[X]
  276.          End If 
  277.          Erase 7
  278.       Else 
  279.          _HELP[MK,X,0]
  280.       End If 
  281.    End If 
  282.    If X<558 and Y>209 and Y<223
  283.       X=X/80
  284.       _G[X*80+1,210,X*80+78,222,1]
  285.       If XHELP=0
  286.          If XMENABCD=0
  287.             On X+1 Proc _COMMENT,_READ,_HEXREAD,_SHOWIFF,_EXECUTE,_SIZE,_INFO
  288.          End If 
  289.          If XMENABCD=1
  290.             On X+1 Proc _CONVASM,_CONVBAS,_CONVASC,_CONVPBK,_PLAYABK,_PLAYMED,_PLAYMOD
  291.          End If 
  292.          If XMENABCD=2
  293.             On X+1 Proc _DISKCOPY,_FORMAT,_VERIFY,_INSTALL,_BLKDAT,_DATBLK,_AMOSTEST
  294.          End If 
  295.          If XMENABCD=3
  296.          End If 
  297.          If XMENABCD>3
  298.             _CALLCOMMAND[X+8]
  299.          End If 
  300.          Erase 7
  301.       Else 
  302.          _HELP[MK,X,1]
  303.       End If 
  304.    End If 
  305.    '
  306. '**** 1|2|3|4....8 
  307.    If X>563 and X<636 and Y>209 and Y<223
  308.       Add X,-564 : X=X/20 : Add Y,-210 : Y=Y/7 : XMENABCD=X+Y*4
  309.       _NEWMENU
  310.       _MENU
  311.    End If 
  312.    '
  313.    While Mouse Key<>0 : Wend 
  314.    Fix(0)
  315.    _NEWGG[0] : _NEWGG[1] : _OPTIONOFF
  316. End Proc
  317. '
  318. '**** Men� 1 
  319. Procedure _COPY
  320.    _DPROTECT
  321.    If XPROTECT<82 Then Pop Proc
  322.    '
  323.    If XSD=0
  324.       A=XANZA#
  325.       A$=XDISKNAMEA$
  326.       B$=XDISKNAMEB$
  327.    Else 
  328.       A=XANZB#
  329.       A$=XDISKNAMEB$
  330.       B$=XDISKNAMEA$
  331.    End If 
  332.    '
  333.    If A$=B$
  334.       _TXT["Sourcedrive & Destinationdrive are the same !"]
  335.       Pop Proc
  336.    End If 
  337.    '
  338.    For I=0 To A
  339.       If XSD=0
  340.          N$=XDIRA$(I)
  341.          N=XSTATUSA(I)
  342.       Else 
  343.          N$=XDIRB$(I)
  344.          N=XSTATUSB(I)
  345.       End If 
  346.       If N and Instr(N$,"[DIR]")=0
  347.          _REALNAME[N$]
  348.          If Exist(A$+XFILE$)
  349.             _KOPIEREN[A$+XFILE$,B$+XFILE$]
  350.          End If 
  351.       End If 
  352.    Next I
  353.    '
  354.    If XSD=0
  355.       _LESEDISK[XDISKNAMEB$,1]
  356.       _CLEAR[0]
  357.    Else 
  358.       _LESEDISK[XDISKNAMEA$,0]
  359.       _CLEAR[1]
  360.    End If 
  361. End Proc
  362. Procedure _COPYTO
  363.    _DPROTECT
  364.    If XPROTECT<82 Then Pop Proc
  365.    '
  366.    If XSD=0
  367.       A=XANZA#
  368.       A$=XDISKNAMEA$
  369.       B$=XDISKNAMEB$
  370.    Else 
  371.       A=XANZB#
  372.       A$=XDISKNAMEB$
  373.       B$=XDISKNAMEA$
  374.    End If 
  375.    '
  376.    For I=0 To A
  377.       If XSD=0
  378.          N$=XDIRA$(I)
  379.          N=XSTATUSA(I)
  380.       Else 
  381.          N$=XDIRB$(I)
  382.          N=XSTATUSB(I)
  383.       End If 
  384.       If N and Instr(N$,"[DIR]")=0
  385.          _REALNAME[N$]
  386.          N$=XFILE$
  387.          If Exist(A$+N$)
  388.             _TXT["Old filename: "+N$]
  389.             _TXT["New filename:"]
  390.             _EINGABE[15]
  391.             If XFILE$<>""
  392.                _KOPIEREN[A$+N$,B$+XFILE$]
  393.             Else 
  394.                _TXT[N$+" not copied !"]
  395.             End If 
  396.          End If 
  397.       End If 
  398.    Next I
  399.    '
  400.    If XSD=0
  401.       _LESEDISK[XDISKNAMEB$,1]
  402.       _CLEAR[0]
  403.    Else 
  404.       _LESEDISK[XDISKNAMEA$,0]
  405.       _CLEAR[1]
  406.    End If 
  407. End Proc
  408. Procedure _MOVE
  409.    If XSD=0
  410.       A=XANZA#
  411.       A$=XDISKNAMEA$
  412.       B$=XDISKNAMEB$
  413.    Else 
  414.       A=XANZB#
  415.       A$=XDISKNAMEB$
  416.       B$=XDISKNAMEA$
  417.    End If 
  418.    '    
  419.    If A$=B$
  420.       _TXT["Sourcedrive & Destinationdrive are the same !"]
  421.       Pop Proc
  422.    End If 
  423.    '
  424.    N$=Left$(A$,Instr(A$,":"))
  425.    N2$=Left$(B$,Instr(B$,":"))
  426.    If N$<>N2$
  427.       _TXT["It`s not possible to MOVE across two different drives !"]
  428.       Pop Proc
  429.    End If 
  430.    '    
  431.    On Error Goto _FEHLER
  432.    '
  433.    For I=0 To A
  434.       If XSD=0
  435.          N$=XDIRA$(I)
  436.          N=XSTATUSA(I)
  437.       Else 
  438.          N$=XDIRB$(I)
  439.          N=XSTATUSB(I)
  440.       End If 
  441.       _REALNAME[N$]
  442.       If N
  443.          _TXT["Moving..."+XFILE$+" !"]
  444.          Rename A$+XFILE$ To B$+XFILE$
  445.          If XE : Pop Proc : End If 
  446.       End If 
  447.    Next I
  448.    '
  449.    _LESEDISK[XDISKNAMEB$,1]
  450.    _LESEDISK[XDISKNAMEA$,0]
  451. Pop Proc
  452. '
  453. _FEHLER:
  454.    XE=Errn
  455.    _ERROR[XE]
  456.    Resume Next 
  457. End Proc
  458. Procedure _MOVETO
  459.    If XSD=0
  460.       A=XANZA#
  461.       A$=XDISKNAMEA$
  462.       B$=XDISKNAMEB$
  463.    Else 
  464.       A=XANZB#
  465.       A$=XDISKNAMEB$
  466.       B$=XDISKNAMEA$
  467.    End If 
  468.    If A$=B$
  469.       _TXT["Sourcedrive & Destinationdrive are the same !"]
  470.       Pop Proc
  471.    End If 
  472.    '
  473.    N$=Left$(A$,Instr(A$,":"))
  474.    N2$=Left$(B$,Instr(B$,":"))
  475.    If N$<>N2$
  476.       _TXT["It`s not possible to MOVE across two different drives !"]
  477.       Pop Proc
  478.    End If 
  479.    '
  480.    On Error Goto _FEHLER
  481.    '
  482.    For I=0 To A
  483.       If XSD=0
  484.          N$=XDIRA$(I)
  485.          N=XSTATUSA(I)
  486.       Else 
  487.          N$=XDIRB$(I)
  488.          N=XSTATUSB(I)
  489.       End If 
  490.       _REALNAME[N$]
  491.       If N
  492.          _TXT["Moving..."+XFILE$+" !"]
  493.          N$=XFILE$
  494.          _TXT["Enter new name:"]
  495.          _EINGABE[17]
  496.          If XFILE$<>""
  497.             Rename A$+N$ To B$+XFILE$
  498.             If XE : Pop Proc : End If 
  499.          Else 
  500.             _TXT["File not moved !"]
  501.          End If 
  502.       End If 
  503.    Next I
  504.    '
  505.    _LESEDISK[XDISKNAMEB$,1]
  506.    _LESEDISK[XDISKNAMEA$,0]
  507. Pop Proc
  508. '
  509. _FEHLER:
  510.    XE=Errn
  511.    _ERROR[XE]
  512.    Resume Next 
  513. End Proc
  514. Procedure _DELETE
  515.    _DPROTECT
  516.    If XPROTECT<82 Then Pop Proc
  517.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  518.    '
  519.    On Error Goto _FEHLER
  520.    '
  521.    For I=0 To A
  522.       If XSD=0
  523.          N$=XDIRB$(I)
  524.          N=XSTATUSB(I)
  525.       Else 
  526.          N$=XDIRA$(I)
  527.          N=XSTATUSA(I)
  528.       End If 
  529.       _REALNAME[N$]
  530.       If N
  531.          _TXT["Deleting... "+XFILE$+" !"]
  532.          Kill B$+XFILE$
  533.       End If 
  534.    Next I
  535.    If XSD=0
  536.       _LESEDISK[XDISKNAMEB$,1]
  537.    Else 
  538.       _LESEDISK[XDISKNAMEA$,0]
  539.    End If 
  540.    Pop Proc
  541. _FEHLER:
  542.    XE=Errn
  543.    _ERROR[XE]
  544.    Resume Next 
  545. End Proc
  546. Procedure _RENAME
  547.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  548.    '
  549.    On Error Goto _FEHLER
  550.    '
  551.    For I=0 To A
  552.       If XSD=0
  553.          N$=XDIRB$(I)
  554.          N=XSTATUSB(I)
  555.       Else 
  556.          N$=XDIRA$(I)
  557.          N=XSTATUSA(I)
  558.       End If 
  559.       _REALNAME[N$]
  560.       If N
  561.          _TXT["Rename "+XFILE$+" as:"]
  562.          N$=XFILE$
  563.          _EINGABE[13+Len(XFILE$)]
  564.          XFILE$=Left$(XFILE$,27)
  565.          If XFILE$<>""
  566.             Rename B$+N$ To B$+XFILE$
  567.          End If 
  568.       End If 
  569.    Next I
  570.    '
  571.    If XSD=0 Then _LESEDISK[XDISKNAMEB$,1] Else _LESEDISK[XDISKNAMEA$,0]
  572. Pop Proc
  573.    '
  574. _FEHLER:
  575.    XE=Errn
  576.    _ERROR[XE]
  577.    Resume Next 
  578. End Proc
  579. Procedure _MAKEDIR
  580.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  581.    '
  582.    On Error Goto _FEHLER
  583.    '
  584.    Do 
  585.       _TXT["Enter new directory:"]
  586.       _EINGABE[22]
  587.       Exit If XFILE$=""
  588.       XFILE$=Left$(XFILE$,27)
  589.       Mkdir B$+XFILE$
  590.    Loop 
  591.    '
  592.    If XSD=0 Then _LESEDISK[XDISKNAMEB$,1] Else _LESEDISK[XDISKNAMEA$,0]
  593. Pop Proc
  594.    '
  595. _FEHLER:
  596.    XE=Errn
  597.    _ERROR[XE]
  598.    Resume Next 
  599. End Proc
  600. Procedure _INFO
  601.    If XSD=0 Then DEV$=XDISKNAMEB$ Else DEV$=XDISKNAMEA$
  602.    '
  603.    If DEV$="" Then _TXT["No drive selected !"] : Pop Proc
  604.    If Not Exist(DEV$) Then _TXT[DEV$+" not available !"] : Pop Proc
  605.    '
  606.    Dir$=DEV$
  607.    DEV$=Dir$
  608.    DEV$=DEV$+Chr$(0)
  609.    '
  610.    Repeat 
  611.       INFO$=Space$(40)+Chr$(0)
  612.       IN=Varptr(INFO$)
  613.       Dreg(1)=Varptr(DEV$)
  614.       Dreg(2)=-2
  615.       LVOLOCK=Doscall(-84)
  616.       Dreg(1)=LVOLOCK
  617.       Dreg(2)=IN
  618.       LVOINFO=Doscall(-114)
  619.       LVOUNLOCK=Doscall(-90)
  620.    Until Leek(IN+8)<84
  621.    '
  622.    N=Leek(IN+4)
  623.    If N=-1 Then N0$="RAM:" Else N0$="DF"+Str$(N)-" "+":"
  624.    N1$=Str$(Leek(IN+16))-" "
  625.    N1$=Space$(4-Len(N1$))+N1$
  626.    N=Leek(IN+12)-Leek(IN+16)
  627.    N2$=Str$(N)-" "
  628.    N2$=Space$(4-Len(N2$))+N2$
  629.    N3$=Str$(Dfree)-" "
  630.    N3$=Space$(8-Len(N3$))+N3$
  631.    N4$=Str$(Int(100-(100.0/856928.0)*Dfree))-" "
  632.    N4$=Space$(3-Len(N4$))+N4$+"%"
  633.    N5$=Str$(Leek(IN))-" "
  634.    N5$=Space$(3-Len(N5$))+N5$
  635.    N=Leek(IN+8)
  636.    If N=80 Then N6$="Read Only   "
  637.    If N=81 Then N6$="Validating  "
  638.    If N=82 Then N6$="Read/Write  "
  639.    N=Instr(DEV$,":")
  640.    DEV$=Left$(DEV$,Min(17,N-1))
  641.    N$="    "
  642.    _TXT["Unit    Used    Free    Bytes    Full    Errs    Status     Name"]
  643.    _TXT[String$("-",76)]
  644.    _TXT[N0$+N$+N1$+N$+N2$+" "+N3$+N$+N4$+N$+N5$+"    "+N6$+DEV$]
  645. End Proc
  646. Procedure _SIZE
  647.    If XSD=0
  648.       For I=0 To XANZB#
  649.          N$=XDIRB$(I)
  650.          N=XSTATUSB(I)
  651.          Gosub _SIZE
  652.       Next I
  653.    Else 
  654.       For I=0 To XANZA#
  655.          N$=XDIRA$(I)
  656.          N=XSTATUSA(I)
  657.          Gosub _SIZE
  658.       Next I
  659.    End If 
  660.    _TXT["Dirs :"+Str$(N1)+" /"+Str$(N0)]
  661.    _TXT["Files:"+Str$(N5)+" /"+Str$(N2)]
  662.    _TXT["Bytes:"+Str$(N4)+" /"+Str$(N6)]
  663. Pop Proc
  664. '
  665. _SIZE:
  666.    If Len(N$)>35
  667.       If Instr(N$,"[DIR]")
  668.          Inc N0
  669.          If N>0 : Inc N1 : End If 
  670.       Else 
  671.          Inc N2
  672.          N3=Val(Right$(N$,8))
  673.          Add N6,N3
  674.          If N>0 : Add N4,N3 : Inc N5 : End If 
  675.       End If 
  676.    End If 
  677. Return 
  678. End Proc
  679. Procedure _READ
  680.    If XSD=0 Then B$=XDISKNAMEB$ : B=XANZB# Else B$=XDISKNAMEA$ : B=XANZA#
  681.    '
  682.    On Error Goto _FEHLER
  683.    '
  684.    Fix(2)
  685.    For I=0 To B
  686.       If XSD=0
  687.          N$=XDIRB$(I)
  688.          N=XSTATUSB(I)
  689.       Else 
  690.          N$=XDIRA$(I)
  691.          N=XSTATUSA(I)
  692.       End If 
  693.       If N=-2 Then Pop Proc
  694.       If N=1 Then Gosub _LESEN : Erase 7
  695.    Next I
  696.    If XSD=0 Then _CLEAR[1] Else _CLEAR[0]
  697. Pop Proc
  698. '
  699. _LESEN:
  700.    If Instr(N$,"[DIR]") Then Return 
  701.    '
  702.    N=Val(Right$(N$,8))
  703.    _REALNAME[N$]
  704.    '    
  705.    Ink 1
  706.    _TXT["Loading "+XFILE$+" !"]
  707.    I2=0
  708.    I3=0
  709.    N1=0
  710.    N2=0
  711.    N3=0
  712.    XE=0
  713.    N$=""
  714.    '
  715.    Reserve As Data 7,N
  716.    If XE Then Return 
  717.    Bload B$+XFILE$,7
  718.    If XE Then Return 
  719.    '
  720.    Ink 0
  721.    Bar 0,15 To 640,222
  722.    '
  723.    Ink 1
  724.    _TXT["File : "+B$+XFILE$]
  725.    _TXT["Lines:"]
  726.    _TXT["Read :"]
  727.    Gosub _INFO
  728.    '    
  729.    Repeat 
  730.       Repeat 
  731.          N1=Peek(Start(7)+N2)
  732.          If N1<>10 and N2<N
  733.             N$=N$+Chr$(N1)
  734.          End If 
  735.          Inc N2
  736.          Inc N3
  737.       Until N1=10 or N3=80
  738.       '
  739.       Text 0,21+I2*8,N$
  740.       Inc I2
  741.       Inc I3
  742.       N3=0
  743.       N$=""
  744.       '
  745.       If I2=26 or N2=>N
  746.          Gosub _INFO
  747.          Repeat 
  748.             A=Asc(Inkey$)
  749.          Until A<>0
  750.          I2=0
  751.          Ink 0
  752.          Bar 0,15 To 640,222
  753.          Ink 1
  754.          Clear Key 
  755.          If A=27
  756.             Exit 
  757.          End If 
  758.       End If 
  759.    Until N2=>N
  760.    _INSTALLSCREEN
  761. Return 
  762. '
  763. _INFO:
  764.    N2=Min(N2,N)
  765.    Text 72,242,Str$(I3)
  766.    Text 72,250,Str$(100.0/N*N2)+"%  ("+Str$(N2)+" of"+Str$(N)+" Bytes )"
  767. Return 
  768. '
  769. _FEHLER:
  770.    XE=Errn
  771.    _ERROR[XE]
  772.    Resume Next 
  773. End Proc
  774. Procedure _HEXREAD
  775.    If XSD=0 Then B$=XDISKNAMEB$ : B=XANZB# Else B$=XDISKNAMEA$ : B=XANZA#
  776.    '
  777.    On Error Goto _FEHLER
  778.    '
  779.    Fix(2)
  780.    For I=0 To B
  781.       If XSD=0
  782.          N$=XDIRB$(I)
  783.          N=XSTATUSB(I)
  784.       Else 
  785.          N$=XDIRA$(I)
  786.          N=XSTATUSA(I)
  787.       End If 
  788.       If N=-2 Then Pop Proc
  789.       If N Then Gosub _LESEN : Erase 7
  790.    Next I
  791.    '
  792.    If XSD=0 Then _CLEAR[1] Else _CLEAR[0]
  793. Pop Proc
  794. '
  795. _LESEN:
  796.    If Instr(N$,"[DIR]") Then Return 
  797.    '
  798.    N=Val(Right$(N$,8))
  799.    _REALNAME[N$]
  800.    '    
  801.    Ink 1
  802.    _TXT["Loading "+XFILE$+" !"]
  803.    I2=0
  804.    I3=0
  805.    N1=0
  806.    N2=0
  807.    N3=-16
  808.    XE=0
  809.    N$=""
  810.    '
  811.    Reserve As Data 7,N
  812.    If XE Then Return 
  813.    Bload B$+XFILE$,7
  814.    If XE Then Return 
  815.    '
  816.    Ink 0
  817.    Bar 0,15 To 640,222
  818.    '
  819.    FILE$=XFILE$
  820.    Ink 1
  821.    Gosub _SCROLL
  822.    Gosub _INFO
  823.    '    
  824.    Repeat 
  825.       For A=0 To 15
  826.          N1=Peek(Start(7)+N2)
  827.          If N2<N
  828.             If N1<16
  829.                N0$=Hex$(N1,2)
  830.             Else 
  831.                N0$=Hex$(N1)
  832.             End If 
  833.             If N1<32 or(N1>127 and N1<161)
  834.                N1=46
  835.             End If 
  836.             N$=N$+Chr$(N1)
  837.             N1$=N1$+" "+N0$-"$"
  838.          Else 
  839.             N1$=N1$+"   "
  840.          End If 
  841.          Inc N2
  842.          Inc N3
  843.       Next A
  844.       '
  845.       Text 0,21+I2*8,Hex$(N3,8)+":  "+N1$+"    "+N$ : N$="" : N1$=""
  846.       Inc I2
  847.       Inc I3
  848.       '
  849.       If I2=26 or N2=>N
  850.          Gosub _INFO
  851.          Repeat 
  852.             A=Asc(Inkey$)
  853.          Until A<>0
  854.          If A=13
  855.             Gosub _LINES
  856.             _EINGABE[13]
  857.             I2=Val(XFILE$)
  858.             I2=Max(0,I2)
  859.             If I2=0
  860.                I3=0
  861.                N2=0
  862.                N3=-16
  863.             End If 
  864.             If I2>N/16
  865.                I2=0
  866.                I3=0
  867.                N2=0
  868.                N3=-16
  869.             End If 
  870.             If I2>0 and I2<=N/16
  871.                I3=I2-1
  872.                N2=I2*16
  873.                N3=N2-16
  874.             End If 
  875.             Gosub _SCROLL
  876.          End If 
  877.          I2=0
  878.          Ink 0
  879.          Bar 0,15 To 640,222
  880.          Ink 1
  881.          Clear Key 
  882.          If A=27
  883.             Exit 
  884.          End If 
  885.       End If 
  886.    Until N2=>N
  887.    _INSTALLSCREEN
  888. Return 
  889. '
  890. _SCROLL:
  891.    _TXT["File : "+B$+FILE$]
  892.    _TXT["Lines:"]
  893.    _TXT["Read :"]
  894.    Gosub _INFO
  895. Return 
  896. '
  897. _INFO:
  898.    N2=Min(N2,N)
  899.    Text 72,242,Str$(I3)
  900.    Text 72,250,Str$(100.0/N*N2)+"%  ("+Str$(N2)+" of"+Str$(N)+" Bytes )"
  901. Return 
  902. '
  903. _LINES:
  904.    _TXT["Max. lines:"+Str$(N/16+1)]
  905.    _TXT["Cur. lines:"+Str$(Max(1,I3-26))+" to"+Str$(I3)]
  906.    _TXT["Enter line:"]
  907. Return 
  908. '
  909. _FEHLER:
  910.    XE=Errn
  911.    _ERROR[XE]
  912.    Resume Next 
  913. End Proc
  914. Procedure _PROTECT
  915.    _DPROTECT
  916.    If XPROTECT<82 Then Pop Proc
  917.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  918.    '
  919.    For I=0 To A
  920.       If XSD=0
  921.          N$=XDIRB$(I)
  922.          N=XSTATUSB(I)
  923.       Else 
  924.          N$=XDIRA$(I)
  925.          N=XSTATUSA(I)
  926.       End If 
  927.       If N
  928.          _REALNAME[N$]
  929.           N$=B$+XFILE$+Chr$(0)
  930.          _TXT["Enter flags <hsparwed> for "+XFILE$+":"]
  931.          _EINGABE[30+Len(XFILE$)]
  932.          Gosub _PROTECT
  933.       End If 
  934.    Next I
  935.    If XSD Then _CLEAR[0] Else _CLEAR[1]
  936. Pop Proc
  937. '
  938. _PROTECT:
  939.    XFILE$=Upper$(XFILE$) : N=0
  940.    If Instr(XFILE$,"D")=0 : Add N,1 : End If 
  941.    If Instr(XFILE$,"E")=0 : Add N,2 : End If 
  942.    If Instr(XFILE$,"W")=0 : Add N,4 : End If 
  943.    If Instr(XFILE$,"R")=0 : Add N,8 : End If 
  944.    If Instr(XFILE$,"A") : Add N,16 : End If 
  945.    If Instr(XFILE$,"P") : Add N,32 : End If 
  946.    If Instr(XFILE$,"S") : Add N,64 : End If 
  947.    If Instr(XFILE$,"H") : Add N,128 : End If 
  948.    '
  949.    Dreg(1)=Varptr(N$)
  950.    Dreg(2)=N
  951.    LVOPROTECT=Doscall(-186)
  952.    '
  953.    If LVOPROTECT=0 Then _TXT["Can`t protect, error occured !"]
  954. Return 
  955. End Proc
  956. Procedure _COMMENT
  957.    _DPROTECT
  958.    If XPROTECT<82 Then Pop Proc
  959.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  960.    '
  961.    For I=0 To A
  962.       If XSD=0
  963.          N$=XDIRB$(I)
  964.          N=XSTATUSB(I)
  965.       Else 
  966.          N$=XDIRA$(I)
  967.          N=XSTATUSA(I)
  968.       End If 
  969.       If N
  970.          _REALNAME[N$]
  971.           N$=B$+XFILE$+Chr$(0)
  972.          _TXT["Enter comment for "+XFILE$+":"]
  973.          _EINGABE[21+Len(XFILE$)]
  974.          Gosub _COMMENT
  975.       End If 
  976.    Next I
  977.    If XSD Then _CLEAR[0] Else _CLEAR[1]
  978. Pop Proc
  979. '
  980. _COMMENT:
  981.    XFILE$=XFILE$+Chr$(0)
  982.    Dreg(1)=Varptr(N$)
  983.    Dreg(2)=Varptr(XFILE$)
  984.    LVOCOMMENT=Doscall(-180)
  985.    If LVOCOMMENT=0 Then _TXT["Can`t add comment, error occured !"]
  986. Return 
  987. End Proc
  988. Procedure _SHOWIFF
  989.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  990.    '
  991.    On Error Goto _FEHLER
  992.    '
  993.    For I=0 To A
  994.       If XSD=0
  995.          N$=XDIRB$(I)
  996.          N=XSTATUSB(I)
  997.          XSTATUSB(I)=0
  998.       Else 
  999.          N$=XDIRA$(I)
  1000.          N=XSTATUSA(I)
  1001.          XSTATUSA(I)=0
  1002.       End If 
  1003.       If N
  1004.          Gosub _SHOWIFF
  1005.       End If 
  1006.    Next I
  1007.    '
  1008.    If XSD=0 Then _SHOWDIR[1] Else _SHOWDIR[0]
  1009. Pop Proc
  1010. '
  1011. _SHOWIFF:
  1012.    XE=0
  1013.    If Instr(N$,"[DIR]") Then Return 
  1014.    _REALNAME[N$]
  1015.    _TXT["Showing "+B$+XFILE$+" as IFF picture !"]
  1016.    '
  1017.    Open In 1,B$+XFILE$
  1018.       If XE Then Return 
  1019.       N$=Input$(1,22)
  1020.       N$=Upper$(N$)
  1021.    Close 1
  1022.    '
  1023.    If Instr(N$,"ILBMBMHD")
  1024.       Load Iff B$+XFILE$,1
  1025.       Gosub _INFO
  1026.    Else 
  1027.       If Instr(N$,"PAC.PIC")
  1028.          _TXT[XFILE$+" is not an IFF picture !"]
  1029.          _TXT["Should I try to load as AMOS Bank <Y/N> ?:"]
  1030.          N$=XFILE$
  1031.          _EINGABE[44]
  1032.          XFILE$=Upper$(XFILE$)
  1033.          If XFILE$="Y"
  1034.             Load B$+N$,7
  1035.             Unpack 7 To 1
  1036.             Erase 7
  1037.             Gosub _INFO
  1038.          End If 
  1039.       Else 
  1040.          _TXT[XFILE$+" is not an IFF or AmBk picture !"]
  1041.       End If 
  1042.    End If 
  1043. Return 
  1044. '
  1045. _INFO:
  1046.    Screen 1
  1047.    If XE Then Return 
  1048.    Screen Hide 0
  1049.    N=Screen Height
  1050.    N0=Screen Width
  1051.    N1=Screen Colour
  1052.    Clear Key 
  1053.    While Asc(Inkey$)=0 and Mouse Key=0 : Wend 
  1054.    Screen Close 1
  1055.    Screen Show 0
  1056.    Screen 0
  1057.    _TXT["Height:"+Str$(N)+"    Width:"+Str$(N0)+"    Colours:"+Str$(N1)]
  1058.    Wait 50
  1059. Return 
  1060. '
  1061. _FEHLER:
  1062.    XE=Errn
  1063.    _ERROR[XE]
  1064.    Resume Next 
  1065. End Proc
  1066. Procedure _EXECUTE
  1067.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  1068.    '
  1069.    For I=0 To A
  1070.       If XSD=0
  1071.          N$=XDIRB$(I)
  1072.          N=XSTATUSB(I)
  1073.       Else 
  1074.          N$=XDIRA$(I)
  1075.          N=XSTATUSA(I)
  1076.       End If 
  1077.       If N<>0 and Instr(N$,"[DIR]")=0
  1078.          _REALNAME[N$]
  1079.           N$=Chr$(34)+B$+XFILE$+Chr$(34)
  1080.          _TXT["Enter parameters for "+XFILE$+":"]
  1081.          _EINGABE[24+Len(XFILE$)]
  1082.          If XFILE$<>""
  1083.             XFILE$=N$+" "+XFILE$
  1084.          Else 
  1085.             XFILE$=N$
  1086.          End If 
  1087.          _RUN[True]
  1088.       End If 
  1089.    Next I
  1090.    If XSD=0 Then _CLEAR[1] Else _CLEAR[0]
  1091. End Proc
  1092. '
  1093. '**** Men� 2 
  1094. Procedure _SORT
  1095.    _DPROTECT
  1096.    If XPROTECT<82 Then Pop Proc
  1097.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  1098.    '
  1099.    For I=0 To A
  1100.       If XSD=0
  1101.          N$=XDIRB$(I)
  1102.          N=XSTATUSB(I)
  1103.       Else 
  1104.          N$=XDIRA$(I)
  1105.          N=XSTATUSA(I)
  1106.       End If 
  1107.       If N and Instr(N$,"[DIR]")=0
  1108.          XFILE$=N$
  1109.          _ORDNEN[B$]
  1110.          Erase 7
  1111.       End If 
  1112.    Next I
  1113.    If XSD=0 Then _LESEDISK[B$,1] Else _LESEDISK[B$,0]
  1114. End Proc
  1115. Procedure _MERGE
  1116.    _DPROTECT
  1117.    If XPROTECT<82 Then Pop Proc
  1118.    If XSD=0 Then A$=XDISKNAMEA$ : B$=XDISKNAMEB$ : A=XANZA# Else A$=XDISKNAMEB$ : B$=XDISKNAMEA$ : A=XANZB#
  1119.    '
  1120.    On Error Goto _FEHLER
  1121.    '
  1122.    For I=0 To A
  1123.       If XSD=0
  1124.          N$=XDIRA$(I)
  1125.          N=XSTATUSA(I)
  1126.       Else 
  1127.          N$=XDIRB$(I)
  1128.          N=XSTATUSB(I)
  1129.       End If 
  1130.       If N and Instr(N$,"[DIR]")=0
  1131.          FGR=FGR+Val(Right$(N$,8))
  1132.       End If 
  1133.    Next I
  1134.    '
  1135.    If FGR<>0 and Exist(A$)
  1136.       Reserve As Data 7,FGR
  1137.       If XE
  1138.          Erase 7
  1139.          Pop Proc
  1140.       End If 
  1141.       _TXT["Enter new filename:"]
  1142.       _EINGABE[21]
  1143.       If XFILE$<>""
  1144.          N1$=B$+XFILE$
  1145.          '    
  1146.          FGR=Start(7)
  1147.          For I=0 To A
  1148.             If XSD=0
  1149.                N$=XDIRA$(I)
  1150.                N=XSTATUSA(I)
  1151.             Else 
  1152.                N$=XDIRB$(I)
  1153.                N=XSTATUSB(I)
  1154.             End If 
  1155.             If N and Instr(N$,"[DIR]")=0
  1156.                N=Val(Right$(N$,8))
  1157.                _REALNAME[N$]
  1158.                _TXT["Merging... "+A$+XFILE$+" !"]
  1159.                If Exist(A$+XFILE$)
  1160.                   Bload A$+XFILE$,FGR
  1161.                   Add FGR,N
  1162.                Else 
  1163.                   _TXT[B$+XFILE$+" not found !"]
  1164.                   _TXT["Merging aborted !"]
  1165.                   Erase 7
  1166.                   Pop Proc
  1167.                End If 
  1168.             End If 
  1169.          Next I
  1170.          _TXT["Saving files to "+N1$+" !"]
  1171.          Bsave N1$,Start(7) To FGR
  1172.          Erase 7
  1173.          If XSD=0
  1174.             _CLEAR[0]
  1175.             _LESEDISK[B$,1]
  1176.          End If 
  1177.       Else 
  1178.          _TXT["Merging aborted !"]
  1179.          Erase 7
  1180.       End If 
  1181.    End If 
  1182. Pop Proc
  1183. '
  1184. _FEHLER:
  1185.    XE=Errn
  1186.    _ERROR[XE]
  1187.    Resume Next 
  1188. End Proc
  1189. Procedure _COMPARE
  1190.    On Error Goto _FEHLER
  1191.    A=Max(XANZA#,XANZB#)
  1192.    For I=0 To A
  1193.       If XSTATUSA(I) and Instr(XDIRA$(I),"[DIR]")=0
  1194.          N0$=XDIRA$(I)
  1195.          I=A
  1196.       End If 
  1197.    Next I
  1198.    For I=0 To A
  1199.       If XSTATUSB(I) and Instr(XDIRB$(I),"[DIR]")=0
  1200.          N1$=XDIRB$(I)
  1201.          I=A
  1202.       End If 
  1203.    Next I
  1204.    '
  1205.    If N0$="" or(N1$="") Then _TXT["Two files needed to compare !"] : Pop Proc
  1206.    '
  1207.    N=Max(Val(Right$(N0$,8)),Val(Right$(N1$,8)))
  1208.    N2=Min(Val(Right$(N0$,8)),Val(Right$(N1$,8)))
  1209.    '
  1210.    _REALNAME[N0$]
  1211.    N0$=XDISKNAMEA$+XFILE$
  1212.    _REALNAME[N1$]
  1213.    N1$=XDISKNAMEB$+XFILE$
  1214.    '
  1215.    Reserve As Data 7,N
  1216.    If XE Then Pop Proc
  1217.    Reserve As Data 8,N
  1218.    If XE Then Pop Proc
  1219.    '
  1220.    Bload N0$,7
  1221.    If XE Then Pop Proc
  1222.    Bload N1$,8
  1223.    If XE Then Pop Proc
  1224.    '
  1225.    Ink 0
  1226.    Bar 0,15 To 640,222
  1227.    N0$=Left$(N0$,38)
  1228.    N0$=N0$+Space$(38-Len(N0$))
  1229.    N1$=Left$(N1$,38)
  1230.    N1$=N1$+Space$(38-Len(N1$))
  1231.    A=0
  1232.    Ink 2,1
  1233.    Text 0,20,Left$(N0$,38)
  1234.    Text 336,20,Left$(N1$,38)
  1235.    Ink 1,0
  1236.    _TXT["# of different bytes: 0"]
  1237.    '
  1238.    For I=0 To N2 Step 38
  1239.       For I2=0 To 37
  1240.          N0=Peek(Start(7)+I+I2)
  1241.          N1=Peek(Start(8)+I+I2)
  1242.          If I+I2<N2
  1243.             If N0<>N1
  1244.                Ink 2
  1245.                Inc N3
  1246.             Else 
  1247.                Ink 1
  1248.             End If 
  1249.             Text 0+I2*8,29+I3*8,Chr$(N0)
  1250.             Text 336+I2*8,29+I3*8,Chr$(N1)
  1251.          End If 
  1252.       Next I2
  1253.       Add I3,1
  1254.       If I3=25 or I=>N2
  1255.          Ink 1
  1256.          Text 190,250,Str$(N3)
  1257.          Clear Key 
  1258.          Repeat 
  1259.             A=Asc(Inkey$)
  1260.          Until A<>0
  1261.          If A=27
  1262.             Exit 
  1263.          End If 
  1264.          I3=0
  1265.          A=0
  1266.          Ink 0
  1267.          Bar 0,23 To 640,222
  1268.       End If 
  1269.    Next I
  1270.    Ink 1
  1271.    Text 190,250,Str$(N3)
  1272.    If A=0 Then Wait Key 
  1273.    Erase 7
  1274.    Erase 8
  1275.    _INSTALLSCREEN
  1276. Pop Proc
  1277. '
  1278. _FEHLER:
  1279.    XE=Errn
  1280.    _ERROR[XE]
  1281.    Erase 7
  1282.    Erase 8
  1283.    Resume Next 
  1284. End Proc
  1285. Procedure _SAVEMEM
  1286.    If XSD=0 Then B$=XDISKNAMEB$ Else B$=XDISKNAMEA$
  1287.    '
  1288.    On Error Goto _FEHLER
  1289.    '
  1290.    _TXT["Enter startaddress:"]
  1291.    _EINGABE[21]
  1292.    N0=Abs(Val(XFILE$))
  1293.    _TXT["Enter endaddress..:"]
  1294.    _EINGABE[21]
  1295.    N1=Abs(Val(XFILE$))
  1296.    '
  1297.    _TXT["Enter outputfile..:"]
  1298.    _EINGABE[21]
  1299.    If XFILE$="" Then _TXT["Save memory aborted !"] : Pop Proc
  1300.    '
  1301.    If N0>N1 Then Swap N0,N1
  1302.    '
  1303.    Bsave B$+XFILE$,N0 To N1
  1304.    If XE=88 Then Kill B$+XFILE$
  1305. Pop Proc
  1306. '
  1307. _FEHLER:
  1308.    XE=Errn
  1309.    _ERROR[XE]
  1310.    Resume Next 
  1311. End Proc
  1312. Procedure _PACK
  1313.    _DPROTECT
  1314.    If XPROTECT<82 Then Pop Proc
  1315.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  1316.    '
  1317.    On Error Goto _FEHLER
  1318.    '
  1319.    For I=0 To A
  1320.       If XSD=0
  1321.          N$=XDIRB$(I)
  1322.          N=XSTATUSB(I)
  1323.       Else 
  1324.          N$=XDIRA$(I)
  1325.          N=XSTATUSA(I)
  1326.       End If 
  1327.       If N=-2 Then Pop Proc
  1328.       If N=1 and Instr(N$,"[DIR]")=0
  1329.          XFILE$=N$
  1330.          Gosub _PACK
  1331.          Erase 7
  1332.       End If 
  1333.    Next I
  1334.    '
  1335.    If XSD=0 Then _LESEDISK[B$,1] Else _LESEDISK[B$,0]
  1336. Pop Proc
  1337. '
  1338. _PACK:
  1339.    XE=0
  1340.    N=Val(Right$(XFILE$,8))
  1341.    _REALNAME[XFILE$]
  1342.    '
  1343.    Reserve As Data 7,N
  1344.    If XE Then Return 
  1345.    Bload B$+XFILE$,7
  1346.    If XE Then Return 
  1347.    '
  1348.    _TXT["Packing "+B$+XFILE$+" !"]
  1349.    _TXT["Press CTRL + C to terminate the packing !"]
  1350.    '
  1351.    C= Extension_5_00CE(Start(7),N,-1,512,19)
  1352.    '
  1353.    If C=-1 Then _TXT["Sorry... it`s impossible to pack "+XFILE$+" !"]
  1354.    If C=-2 Then _TXT["Packing of "+XFILE$+" aborted !"]
  1355.    If C>0
  1356.       _TXT["Normal length:"+Str$(N)]
  1357.       _TXT["Packed length:"+Str$(C)]
  1358.       _TXT["Gained.......:"+Str$(100-(100*C)/N)+"% ="+Str$(N-C)+" bytes"]
  1359.       Bsave B$+XFILE$,Start(7) To Start(7)+C
  1360.    End If 
  1361.    Wait 50
  1362. Return 
  1363. '
  1364. _FEHLER:
  1365.    XE=Errn
  1366.    _ERROR[XE]
  1367.    Resume Next 
  1368. End Proc
  1369. Procedure _UNPACK
  1370.    _DPROTECT
  1371.    If XPROTECT<82 Then Pop Proc
  1372.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  1373.    '
  1374.    On Error Goto _FEHLER
  1375.    '
  1376.    For I=0 To A
  1377.       If XSD=0
  1378.          N$=XDIRB$(I)
  1379.          N=XSTATUSB(I)
  1380.       Else 
  1381.          N$=XDIRA$(I)
  1382.          N=XSTATUSA(I)
  1383.       End If 
  1384.       If N=-2 Then Pop Proc
  1385.       If N=1 and Instr(N$,"[DIR]")=0
  1386.          XFILE$=N$
  1387.          Gosub _UNPACK
  1388.          Erase 7
  1389.       End If 
  1390.    Next I
  1391.    '
  1392.    If XSD=0 Then _LESEDISK[B$,1] Else _LESEDISK[B$,0]
  1393. Pop Proc
  1394. '
  1395. _UNPACK:
  1396.    XE=0
  1397.    N=Val(Right$(XFILE$,8))
  1398.    _REALNAME[XFILE$]
  1399.    '
  1400.    Reserve As Work 7,200000
  1401.    If XE Then Return 
  1402.    Bload B$+XFILE$,7
  1403.    If XE Then Return 
  1404.    '
  1405.    _TXT["Unpacking "+XFILE$+"... !"]
  1406.    C= Extension_5_00E4(Start(7),N)
  1407.    _TXT["Unpacked length:"+Str$(C)+" bytes !"]
  1408.    '
  1409.    If XFILE$<>""
  1410.       Bsave B$+XFILE$,Start(7) To Start(7)+C
  1411.    End If 
  1412. Return 
  1413. '
  1414. _FEHLER:
  1415.    XE=Errn
  1416.    _ERROR[XE]
  1417.    Resume Next 
  1418. End Proc
  1419. Procedure _CHECKVEC
  1420.    For I=0 To 4
  1421.       Read N$,N
  1422.       _TXT["Checking... "+N$]
  1423.       Add N,Leek(4)
  1424.       N=Leek(N)
  1425.       If N Then Exit 
  1426.    Next 
  1427.    If N
  1428.       _TXT["Be carefull... "+N$+" is abnormal ( "+Hex$(N,8)+" ) !"]
  1429.    Else 
  1430.       _TXT["No abnormal pointer of any vector !"]
  1431.    End If 
  1432. Data "ColdCapture",$2A
  1433. Data "CoolCapture",$2E
  1434. Data "WarmCapture",$32
  1435. Data "KickMemPtr",$222
  1436. Data "KickTagPtr",$226
  1437. End Proc
  1438. Procedure _CLEARSYS
  1439.    _TXT["Are you sure to clear & reset your system <Y/N> ?:"]
  1440.    _EINGABE[52]
  1441.    If Upper$(XFILE$)<>"Y" Then Pop Proc
  1442.    For I=1 To 88
  1443.       Read N
  1444.       N$=N$+Chr$(N)
  1445.    Next 
  1446.    Call Varptr(N$)
  1447. Data 51,252,64,0,0,223,240,154,44,121,0,0,0,4,34,60,170,170
  1448. Data 187,187,45,65,0,36,45,65,0,38,45,65,0,62,45,65,0,78
  1449. Data 45,65,0,82,45,65,2,42,12,110,0,36,0,20,109,4,78,238
  1450. Data 253,42,75,250,0,8,78,174,255,226,0,0,32,124,1,0,0,0
  1451. Data 145,232,255,236,32,104,0,4,85,136,78,112,78,208,0,0
  1452. End Proc
  1453. Procedure _CONVASM
  1454.    _DPROTECT
  1455.    If XPROTECT<82 Then Pop Proc
  1456.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZA# Else B$=XDISKNAMEA$ : A=XANZB#
  1457.    '
  1458.    For I=0 To A
  1459.       If XSD=0
  1460.          N$=XDIRA$(I)
  1461.          N=XSTATUSA(I)
  1462.       Else 
  1463.          N$=XDIRB$(I)
  1464.          N=XSTATUSB(I)
  1465.       End If 
  1466.       If N<0 Then Pop Proc
  1467.       If N and Instr(N$,"[DIR]")=0
  1468.          XFILE$=N$
  1469.          _KONVERTIEREN[";","Save as assembler source:",Chr$(9)+"DC."]
  1470.          Erase 7
  1471.       End If 
  1472.    Next I
  1473.    '
  1474.    If XSD=0 Then _LESEDISK[B$,1] Else _LESEDISK[B$,0]
  1475. End Proc
  1476. Procedure _CONVBAS
  1477.    _DPROTECT
  1478.    If XPROTECT<82 Then Pop Proc
  1479.    If XSD=0 Then A$=XDISKNAMEA$ : B$=XDISKNAMEB$ : A=XANZA# Else A$=XDISKNAMEB$ : B$=XDISKNAMEA$ : A=XANZB#
  1480.    '
  1481.    For I=0 To A
  1482.       If XSD=0
  1483.          N$=XDIRA$(I)
  1484.          N=XSTATUSA(I)
  1485.       Else 
  1486.          N$=XDIRB$(I)
  1487.          N=XSTATUSB(I)
  1488.       End If 
  1489.       If N<0 Then Pop Proc
  1490.       If N and Instr(N$,"[DIR]")=0
  1491.          XFILE$=N$
  1492.          _KONVERTIEREN["Rem ","Save as basic source....:","Data "]
  1493.          Erase 7
  1494.       End If 
  1495.    Next I
  1496.    '
  1497.    If XSD=0 Then _LESEDISK[B$,1] Else _LESEDISK[B$,0]
  1498. End Proc
  1499. Procedure _CONVASC
  1500.    _DPROTECT
  1501.    If XPROTECT<82 Then Pop Proc
  1502.    If XSD=0 Then A$=XDISKNAMEA$ : B$=XDISKNAMEB$ : A=XANZA# Else A$=XDISKNAMEB$ : B$=XDISKNAMEA$ : A=XANZB#
  1503.    '
  1504.    For I=0 To A
  1505.       If XSD=0
  1506.          N$=XDIRA$(I)
  1507.          N=XSTATUSA(I)
  1508.       Else 
  1509.          N$=XDIRB$(I)
  1510.          N=XSTATUSB(I)
  1511.       End If 
  1512.       If N<0 Then Pop Proc
  1513.       If N and Instr(N$,"[DIR]")=0
  1514.          XFILE$=N$
  1515.          _KONVERTIERENASCPBK[0]
  1516.          Erase 7
  1517.       End If 
  1518.    Next I
  1519.    '
  1520.    If XSD=0 Then _LESEDISK[B$,1] Else _LESEDISK[B$,0]
  1521. End Proc
  1522. Procedure _CONVPBK
  1523.    _DPROTECT
  1524.    If XPROTECT<82 Then Pop Proc
  1525.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZA# Else B$=XDISKNAMEA$ : A=XANZB#
  1526.    '
  1527.    For I=0 To A
  1528.       If XSD=0
  1529.          N$=XDIRA$(I)
  1530.          N=XSTATUSA(I)
  1531.       Else 
  1532.          N$=XDIRB$(I)
  1533.          N=XSTATUSB(I)
  1534.       End If 
  1535.       If N<0 Then Pop Proc
  1536.       If N and Instr(N$,"[DIR]")=0
  1537.          XFILE$=N$
  1538.          _KONVERTIERENASCPBK[1]
  1539.          Erase 7
  1540.       End If 
  1541.    Next I
  1542.    '
  1543.    If XSD=0 Then _LESEDISK[B$,1] Else _LESEDISK[B$,0]
  1544. End Proc
  1545. Procedure _PLAYABK
  1546.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  1547.    On Error Goto _FEHLER
  1548.    '
  1549.    For I=0 To A
  1550.       If XSD=0
  1551.          N$=XDIRB$(I)
  1552.          N=XSTATUSB(I)
  1553.       Else 
  1554.          N$=XDIRA$(I)
  1555.          N=XSTATUSA(I)
  1556.       End If 
  1557.       If N=-2 Then Pop Proc
  1558.       If N=1 and Instr(N$,"[DIR]")=0
  1559.          XE=0
  1560.          _REALNAME[N$]
  1561.          _TXT["Loading "+XFILE$+" as AMOS Music Bank !"]
  1562.          Load B$+XFILE$,3
  1563.          If XE=0
  1564.             Music 1
  1565.             If XE=0
  1566.                _LEDONOFF
  1567.                Music Off 
  1568.             End If 
  1569.          End If 
  1570.          Erase 3
  1571.       End If 
  1572.    Next I
  1573.    '
  1574.    If XSD=0 Then _CLEAR[1] Else _CLEAR[0]
  1575. Pop Proc
  1576. '
  1577. _FEHLER:
  1578.    XE=Errn
  1579.    _ERROR[XE]
  1580.    Resume Next 
  1581. End Proc
  1582. Procedure _PLAYMED
  1583.    If XSD=0
  1584.       A=XANZB#
  1585.       B$=XDISKNAMEB$
  1586.    Else 
  1587.       A=XANZA#
  1588.       B$=XDISKNAMEA$
  1589.    End If 
  1590.    '
  1591.    MEDNAME$="medplayer.library"+Chr$(0)
  1592.    Areg(1)=Varptr(MEDNAME$)
  1593.    Dreg(0)=0
  1594.    LVOMEDBASE=Execall(-552)
  1595.    If LVOMEDBASE=0
  1596.       _TXT["Sorry, medplayer.library not available !"]
  1597.       Pop Proc
  1598.    End If 
  1599.    '
  1600.    For I=0 To A
  1601.       If XSD=0
  1602.          N$=XDIRB$(I)
  1603.          N=XSTATUSB(I)
  1604.       Else 
  1605.          N$=XDIRA$(I)
  1606.          N=XSTATUSA(I)
  1607.       End If 
  1608.       If N=-2 Then Goto _CLOSELIB
  1609.       If N=1 and Instr(N$,"[DIR]")=0
  1610.          _REALNAME[N$]
  1611.          N$=B$+XFILE$+Chr$(0)
  1612.          Gosub _PLAYMED
  1613.       End If 
  1614.    Next I
  1615.    '
  1616.    If XSD=0 Then _CLEAR[1] Else _CLEAR[0]
  1617.    '
  1618. _CLOSELIB:
  1619.    Areg(1)=LVOMEDBASE
  1620.    LVOCLOSELIBRARY=Execall(-414)
  1621. Pop Proc
  1622. '
  1623. _PLAYMED:
  1624.    _TXT["Load... "+XFILE$+" as MED module !"]
  1625.    '
  1626.    MEDADR=Varptr(N$)
  1627.    Call LVOMEDBASE-$1E
  1628.    Areg(0)=MEDADR
  1629.    Call LVOMEDBASE-$48
  1630.    MEDADR=Dreg(0)
  1631.    If MEDADR=0 Then _TXT["Can`t load "+XFILE$+" as MED module !"] : Return 
  1632.    Areg(0)=MEDADR
  1633.    Call LVOMEDBASE-$2A
  1634.    '
  1635.    _LEDONOFF
  1636.    '
  1637.    Call LVOMEDBASE-$36
  1638.    Areg(0)=MEDADR
  1639.    Call LVOMEDBASE-$4E
  1640.    Call LVOMEDBASE-$24
  1641. Return 
  1642. End Proc
  1643. Procedure _PLAYMOD
  1644.    On Error Goto _FEHLER
  1645.    '
  1646.    If XSD
  1647.       A=XANZA#
  1648.       A$=XDISKNAMEA$
  1649.    Else 
  1650.       A=XANZB#
  1651.       A$=XDISKNAMEB$
  1652.    End If 
  1653.    '
  1654.    For I=0 To A
  1655.       If XSD
  1656.          N=XSTATUSA(I)
  1657.          N$=XDIRA$(I)
  1658.       Else 
  1659.          N=XSTATUSB(I)
  1660.          N$=XDIRB$(I)
  1661.       End If 
  1662.       If N=-2 Then Pop Proc
  1663.       If N=1 and Instr(N$,"[DIR]")=0
  1664.          _REALNAME[N$]
  1665.          _TXT["Loading... "+XFILE$+" as Tracker module !"]
  1666.          Track Load A$+XFILE$,7
  1667.          If XE=0
  1668.             Track Play 
  1669.             Track Loop On 
  1670.             _LEDONOFF
  1671.             Track Stop 
  1672.          End If 
  1673.          Erase 7
  1674.       End If 
  1675.    Next I
  1676.    '
  1677.    If XSD Then _CLEAR[0] Else _CLEAR[1]
  1678. Pop Proc
  1679. '
  1680. _FEHLER:
  1681.    XE=Errn
  1682.    _ERROR[XE]
  1683.    Resume Next 
  1684. End Proc
  1685. '
  1686. '**** Men� 3 
  1687. Procedure _VALUE
  1688.    _TXT["Enter value:"]
  1689.    _EINGABE[14]
  1690.    N=Val(XFILE$)
  1691.    _TXT["DEC:"+Str$(N)+"    HEX: "+Hex$(N,8)+"    BIN: "+Bin$(N,32)]
  1692. End Proc
  1693. Procedure _COLOURS
  1694.    Ink 0 : Bar 3,228 To 635,253
  1695.    For I=0 To 3
  1696.       Ink I : Bar 15+I*50,228 To 55+I*50,253
  1697.       _G[15+I*50,228,55+I*50,253,0]
  1698.    Next I
  1699.    _G[216,228,476,235,0]
  1700.    _G[216,237,476,244,0]
  1701.    _G[216,246,476,253,0]
  1702.    _G[504,228,563,240,0]
  1703.    _G[566,228,625,240,0]
  1704.    _G[504,241,625,253,0]
  1705.    Text 522,237,"Def"
  1706.    Text 584,237,"Sys"
  1707.    Text 556,250,"Use"
  1708.    Gosub PFN
  1709.    Do 
  1710.       While Mouse Key=0 : Wend 
  1711.       X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  1712.       '
  1713.       If Y>227 and Y<253
  1714.          '
  1715.          If X>15 and X<205
  1716.             P=Point(X,Y)
  1717.             Gosub PFN
  1718.          End If 
  1719.          '
  1720.          If X>215 and X<477
  1721.             Add X,-216
  1722.             X=X/17
  1723.             If Y>227 and Y<236 : X0$=Hex$(X)-"$" : End If 
  1724.             If Y>236 and Y<245 : X1$=Hex$(X)-"$" : End If 
  1725.             If Y>245 and Y<254 : X2$=Hex$(X)-"$" : End If 
  1726.             Colour P,Val("$"+X0$+X1$+X2$)
  1727.             Gosub PFN
  1728.          End If 
  1729.          '
  1730.          If X>503 and X<564 and Y>227 and Y<241
  1731.             _G[504,228,563,240,1]
  1732.             Colour 0,$77A
  1733.             Colour 1,$124
  1734.             Colour 2,$CCE
  1735.             Colour 3,$557
  1736.             Gosub PFN
  1737.             Wait 15
  1738.             _G[504,228,563,240,0]
  1739.          End If 
  1740.          If X>565 and X<626 and Y>227 and Y<241
  1741.             _G[566,228,625,240,1]
  1742.             N$=Space$(232)+Chr$(0)
  1743.             Areg(0)=Varptr(N$)
  1744.             Dreg(0)=232
  1745.             LVOGETPREFS=Intcall(-132)
  1746.             Colour 0,Deek(LVOGETPREFS+110)
  1747.             Colour 1,Deek(LVOGETPREFS+112)
  1748.             Colour 2,Deek(LVOGETPREFS+114)
  1749.             Colour 3,Deek(LVOGETPREFS+116)
  1750.             Gosub PFN
  1751.             Wait 15
  1752.             _G[566,228,625,240,0]
  1753.          End If 
  1754.          '
  1755.          If X>503 and X<626 and Y>240 and Y<256
  1756.             _G[504,241,625,253,1]
  1757.             Wait 20
  1758.             _G[504,241,625,253,0]
  1759.             Wait 20
  1760.             Ink 0 : Bar 9,228 To 635,253
  1761.             Pop Proc
  1762.          End If 
  1763.       End If 
  1764.    Loop 
  1765.    '
  1766. PFN:
  1767.    N$=Hex$(Colour(P),3)-"$"
  1768.    X0$=Mid$(N$,1,1)
  1769.    X1$=Mid$(N$,2,1)
  1770.    X2$=Mid$(N$,3,1)
  1771.    Text 486,234,X0$
  1772.    Text 486,243,X1$
  1773.    Text 486,252,X2$
  1774.    X0=Val("$"+X0$)
  1775.    X1=Val("$"+X1$)
  1776.    X2=Val("$"+X2$)
  1777.    Ink 0
  1778.    For I=0 To 2 : Bar 217,229+I*9 To 475,234+I*9 : Next I
  1779.    Ink 1
  1780.    Bar 217,230 To 218+X0*17,233
  1781.    Bar 217,239 To 218+X1*17,242
  1782.    Bar 217,248 To 218+X2*17,251
  1783.    _G[15+P2*50,228,55+P2*50,253,0]
  1784.    P2=P
  1785.    _G[15+P*50,228,55+P*50,253,1]
  1786.    Colour Back Colour(0)
  1787.    Screen Show 
  1788.    Repeat : Until Mouse Key=0
  1789. Return 
  1790. End Proc
  1791. Procedure _GETDAY
  1792.    X=2000
  1793.    Y=6
  1794.    FILE$=Space$(10)
  1795.    _TXT["Enter state of day..:"]
  1796.    _EINGABE[23]
  1797.    S=Val(XFILE$)
  1798.    '
  1799.    _TXT["Enter state of month:"]
  1800.    _EINGABE[23]
  1801.    M=Val(XFILE$)
  1802.    '
  1803.    _TXT["Enter state of year.:"]
  1804.    _EINGABE[23]
  1805.    H=Val(XFILE$)
  1806.    '
  1807.    If S<32 and S>0 and M<13 and M>0 and H>1581 and H<2001 Then Else _TXT["Please use this format: DD.MM.YYYY  <Year min. 1582 - Year max. 2000> !"] : Pop Proc
  1808.    '
  1809.    For I=X-1 To H Step -1
  1810.       If I mod 400=0 or I mod 4=0
  1811.          Add Y,-2 : I2=1
  1812.       Else 
  1813.          Dec Y : I2=0
  1814.       End If 
  1815.       If I mod 100=0 and I mod 400<>0 Then Inc Y : I2=0
  1816.       If Y<1 Then Add Y,7
  1817.    Next I
  1818.    '
  1819.    Restore MT
  1820.    '
  1821.    For I=1 To M-1
  1822.       Read A
  1823.       Add N,A
  1824.    Next I
  1825.    '
  1826.    Add N,S-1
  1827.    If I2=1 and M>2 Then Inc N
  1828.    Add Y,(N mod 7) : If Y>7 Then Add Y,-7
  1829.    If I2=0 and M=2 and S>28 : _TXT["The date of "+Str$(S)-" "+"."+Str$(M)-" "+"."+Str$(H)-" "+" doesn`t exist !"] : Pop Proc : End If 
  1830.    Restore WT
  1831.    For I=1 To Y : Read N$ : Next I
  1832.    _TXT["The day of "+Str$(S)-" "+"."+Str$(M)-" "+"."+Str$(H)-" "+" is a "+N$]
  1833.    '
  1834. MT: Data 31,28,31,30,31,30,31,31,30,31,30,31
  1835. WT: Data "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"
  1836. End Proc
  1837. Procedure _OPENWB
  1838.    LVOOPENWORKBENCH=Intcall(-210)
  1839.    If LVOOPENWORKBENCH=0
  1840.       _TXT["Can`t open Workbench, not enough memory"]
  1841.    Else 
  1842.       _TXT["Workbench is opened !"]
  1843.    End If 
  1844. End Proc
  1845. Procedure _CLOSEWB
  1846.    LVOCLOSEWORKBENCH=Intcall(-78)
  1847.    If LVOCLOSEWORKBENCH=0
  1848.       _TXT["Can`t close Workbench !"]
  1849.    Else 
  1850.       _TXT["Workbench is closed !"]
  1851.    End If 
  1852. End Proc
  1853. Procedure _CLOSE
  1854.    _TXT["Press left AMIGA + A to come back to AmBOS !"]
  1855.    Wait 90
  1856.    Amos To Back 
  1857.    Screen Close 0
  1858.    Repeat 
  1859.       Multi Wait 
  1860.    Until Amos Here
  1861.    _INSTALLAMBOS
  1862.    _INSTALLSCREEN
  1863. End Proc
  1864. Procedure _ABOUT
  1865.    Wait 20
  1866.    Ink 0 : Bar 0,15 To 640,222
  1867.    For I=1 To 18
  1868.       Read Y,N$
  1869.       X=Text Length(N$)
  1870.       If X<97 Then Ink 2 Else Ink 1
  1871.       Text 320-X/2,Y,N$
  1872.    Next I
  1873.    While Asc(Inkey$)=0 and Mouse Key=0 : Wend 
  1874.    _INSTALLSCREEN
  1875. Data 22,"About"
  1876. Data 33,"AmBOS V2.6c is written in AMOS V1.31 and compiled with ACmp V1.0 !"
  1877. Data 49,"Greatings to"
  1878. Data 60,"Frank, Jork, Karsten, Silke, Halime, Ursel, Melanie, Hermann, Momo"
  1879. Data 68,"Jens (Falderi Faldera), Axel, Detlef (Wurzelsepp), Richy, Christina"
  1880. Data 76,"Anja, Jennifer, Giofranco, Wolli, Bernd, Jesus, Robbi, Sonja, B�rbel"
  1881. Data 84,"Jaquline, J�rg, Fracois, and last but not least Big Humphrey the rabbit"
  1882. Data 100,"Thanx"
  1883. Data 111,"`Kaffee Kr�mmel' and `Nachtrock' for its great atmosphere !"
  1884. Data 119,"`Al Bundy and the rest' for being so incredible cool, cool, cool !"
  1885. Data 135,"Important"
  1886. Data 146,"If you found some bugs or have some good ideas and you are able to"
  1887. Data 154,"program in AMOS, so you can change it like you need it !  The only"
  1888. Data 162,"I beg for is to send me the latest update of the new version of AmBOS."
  1889. Data 179,"Write to"
  1890. Data 190,"Volker Stepprath, Tegeler Str. 7, 40789 Monheim, Germany"
  1891. Data 206,"PS"
  1892. Data 217,"Press the Help key and one menuoption to explain it !"
  1893. End Proc
  1894. Procedure _EDITOR
  1895.    On Error Goto _FEHLER
  1896.    If XSD=0
  1897.       A$=XDISKNAMEA$
  1898.       B$=XDISKNAMEB$
  1899.       A=XANZA#
  1900.    Else 
  1901.       A$=XDISKNAMEB$
  1902.       B$=XDISKNAMEA$
  1903.       A=XANZB#
  1904.    End If 
  1905.    For I=0 To A
  1906.       If XSD=0
  1907.          N$=XDIRA$(I)
  1908.          N=XSTATUSA(I)
  1909.       Else 
  1910.          N$=XDIRB$(I)
  1911.          N=XSTATUSB(I)
  1912.       End If 
  1913.       If N=-2 Then Pop Proc
  1914.       If N=1 and Instr(N$,"[DIR]")=0
  1915.          FGR=Val(Right$(N$,8))
  1916.          _REALNAME[N$]
  1917.          NF$=XFILE$
  1918.          Reserve As Data 7,FGR
  1919.          If XE : Pop Proc : End If 
  1920.          Bload A$+NF$,7
  1921.          If XE
  1922.             Erase 7
  1923.             Pop Proc
  1924.          End If 
  1925.          _EDIT[B$,NF$,FGR]
  1926.          Erase 7
  1927.          I2=True
  1928.       End If 
  1929.    Next I
  1930.    If I2=False
  1931.       FGR=1920
  1932.       NF$="NoNamed"
  1933.       Reserve As Data 7,1920
  1934.       _EDIT[B$,NF$,FGR]
  1935.       Erase 7
  1936.    End If 
  1937.    '
  1938.    _INSTALLSCREEN
  1939.    If XSD=0 Then _CLEAR[0] Else _CLEAR[1]
  1940. Pop Proc
  1941. '
  1942. _FEHLER:
  1943.    XE=Errn
  1944.    _ERROR[XE]
  1945. Resume Next 
  1946. End Proc
  1947. Procedure _DISKCOPY
  1948.    _TXT["Sourcedrive (0-3):"]
  1949.    _EINGABE[20]
  1950.    XSOURCE=Abs(Val(XFILE$))
  1951.    N0$="DF"+Str$(XSOURCE)-" "+":"
  1952.    If Drive(N0$)=0
  1953.       _TXT[N0$+" not available !"]
  1954.       Pop Proc
  1955.    End If 
  1956.    '
  1957.    _TXT["Targetdrive (0-3):"]
  1958.    _EINGABE[20]
  1959.    XTARGET=Abs(Val(XFILE$))
  1960.    N1$="DF"+Str$(XTARGET)-" "+":"
  1961.    If Drive(N1$)=0
  1962.       _TXT[N1$+" not available !"]
  1963.       Pop Proc
  1964.    End If 
  1965.    '
  1966.    If XSOURCE=XTARGET
  1967.       _TXT["Sourcedrive & Targetdrive must be different !"]
  1968.       Pop Proc
  1969.    End If 
  1970.    '
  1971.    _TXT["Insert sourcedisk in drive "+N0$+" !"]
  1972.    _TXT["Insert targetdisk in drive "+N1$+" !"]
  1973.    _TXT["Press any key to start diskcopy <ESC = Abort> !"]
  1974.    Repeat 
  1975.       N=Asc(Inkey$)
  1976.    Until N
  1977.    If N=27 Then _TXT["Diskcopy aborted !"] : Pop Proc
  1978.    _TXT[""]
  1979.    '    
  1980.    Reserve As Chip Data 7,5632
  1981.    DISKREP$=Space$(40)+Chr$(0)
  1982.    DEVNAME$="trackdisk.device"+Chr$(0)
  1983.    DISKREP=Varptr(DISKREP$)
  1984.    IOREQ$=Space$(80)+Chr$(0)
  1985.    IOREQADR=Varptr(IOREQ$)
  1986.    IOREQ2$=Space$(80)+Chr$(0)
  1987.    IOREQADR2=Varptr(IOREQ2$)
  1988.    Areg(0)=0
  1989.    Areg(1)=0
  1990.    Dreg(0)=0
  1991.    Dreg(1)=0
  1992.    LVOFINDTASK=Execall(-294)
  1993.    Loke DISKREP+$10,LVOFINDTASK
  1994.    Areg(0)=Varptr(DEVNAME$)
  1995.    '
  1996.    Areg(1)=IOREQADR
  1997.    Dreg(0)=XSOURCE
  1998.    LVOOPENDEVICE=Execall(-444)
  1999.    '
  2000.    Areg(1)=IOREQADR2
  2001.    Dreg(0)=XTARGET
  2002.    LVOOPENDEVICE=Execall(-444)
  2003.    '
  2004.    Loke IOREQADR+14,DISKREP
  2005.    Doke IOREQADR+28,2
  2006.    Loke IOREQADR+36,5632
  2007.    Loke IOREQADR+40,Start(7)
  2008.    Loke IOREQADR2+14,DISKREP
  2009.    Doke IOREQADR2+28,11
  2010.    Loke IOREQADR2+36,5632
  2011.    Loke IOREQADR2+40,Start(7)
  2012.    '
  2013.    Gosub _DISKCOPY
  2014.    '
  2015.    Areg(1)=IOREQADR
  2016.    Doke IOREQADR+28,10
  2017.    Loke IOREQADR+44,0
  2018.    LVODOIO=Execall(-456)
  2019.    Doke IOREQADR+28,9
  2020.    Loke IOREQADR+36,0
  2021.    LVODOIO=Execall(-456)
  2022.    '
  2023.    Areg(1)=IOREQADR2
  2024.    Doke IOREQADR2+28,10
  2025.    Loke IOREQADR2+44,0
  2026.    LVODOIO=Execall(-456)
  2027.    Doke IOREQADR2+28,9
  2028.    Loke IOREQADR2+36,0
  2029.    LVODOIO=Execall(-456)
  2030.    '
  2031.    Areg(1)=IOREQADR
  2032.    LVOCLOSEDEVICE=Execall(-450)
  2033.    Areg(1)=IOREQADR2
  2034.    LVOCLOSEDEVICE=Execall(-450)
  2035.    '
  2036.    Erase 7
  2037. Pop Proc
  2038. '
  2039. _DISKCOPY:
  2040.    For TRACK=0 To 159
  2041.       Text 22,250,"Reading cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
  2042.       Areg(1)=IOREQADR
  2043.       Loke IOREQADR+44,TRACK*5632
  2044.       LVODOIO=Execall(-456)
  2045.       If LVODOIO=29
  2046.          _TXT["No disk in drive "+N0$+" !"]
  2047.          Return 
  2048.       End If 
  2049.       If LVODOIO<>0
  2050.          Text 22,250,"TDERR #"+Str$(LVODOIO)-" "+" occured while reading cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
  2051.          _TXT[""]
  2052.       End If 
  2053.       '
  2054.       Text 22,250,"Writing cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
  2055.       Areg(1)=IOREQADR2
  2056.       Loke IOREQADR2+44,TRACK*5632
  2057.       LVODOIO=Execall(-456)
  2058.       If LVODOIO=28
  2059.          _TXT["Disk in drive "+N1$+" is write protected !"]
  2060.          Return 
  2061.       End If 
  2062.       If LVODOIO=29
  2063.          _TXT["No disk in drive "+N1$+" !"]
  2064.          Return 
  2065.       End If 
  2066.       '    
  2067.       If Asc(Inkey$)=27
  2068.          _TXT["Diskcopy aborted !"]
  2069.          Return 
  2070.       End If 
  2071.       '
  2072.       Add I,I2
  2073.       Add I2,1,0 To 1
  2074.    Next TRACK
  2075.    _TXT["Diskcopy finished !"]
  2076. Return 
  2077. End Proc
  2078. Procedure _FORMAT
  2079.    _DISKIT[1]
  2080. End Proc
  2081. Procedure _VERIFY
  2082.    _DISKIT[5]
  2083. End Proc
  2084. Procedure _INSTALL
  2085.    _DISKIT[2]
  2086. End Proc
  2087. Procedure _BLKDAT
  2088.    _DISKIT[3]
  2089. End Proc
  2090. Procedure _DATBLK
  2091.    _DISKIT[4]
  2092. End Proc
  2093. Procedure _AMOSTEST
  2094.    _DPROTECT
  2095.    If XPROTECT<82 Then Pop Proc
  2096.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  2097.    '
  2098.    On Error Goto _FEHLER
  2099.    '
  2100.    For I=0 To A
  2101.       If XSD=0
  2102.          N$=XDIRB$(I)
  2103.          N=XSTATUSB(I)
  2104.       Else 
  2105.          N$=XDIRA$(I)
  2106.          N=XSTATUSA(I)
  2107.       End If 
  2108.       _REALNAME[N$]
  2109.       If N=1 and Instr(N$,"[DIR]")=0
  2110.          N=Val(Right$(N$,8))
  2111.          _TXT["Making AMOS Editor test on... "+XFILE$+" !"]
  2112.          If Exist(B$+XFILE$)
  2113.             Open Random 1,B$+XFILE$
  2114.                Field 1,12 As V$
  2115.                Get 1,1
  2116.                If Instr(V$,"AMOS Basic")=0
  2117.                   _TXT[XFILE$+" is not an AMOS program !"]
  2118.                Else 
  2119.                   If Instr(V$,"V")>0
  2120.                      _TXT[XFILE$+" already tested !"]
  2121.                   Else 
  2122.                      V$="AMOS Basic V"
  2123.                      Put 1,1
  2124.                   End If 
  2125.                End If 
  2126.             Close 1
  2127.          End If 
  2128.       End If 
  2129.    Next I
  2130.    '
  2131.    If XSD=0
  2132.       _CLEAR[1]
  2133.    Else 
  2134.       _CLEAR[0]
  2135.    End If 
  2136.    Pop Proc
  2137. _FEHLER:
  2138.    XE=Errn
  2139.    _ERROR[XE]
  2140.    Resume Next 
  2141. End Proc
  2142. '
  2143. '**** Men� 4 
  2144. Procedure _SETPRT
  2145.    If XSD=0 Then A=XANZB# Else A=XANZA#
  2146.    '
  2147.    For I=0 To A
  2148.       If XSD=0
  2149.          N$=XDIRB$(I)
  2150.          N=XSTATUSB(I)
  2151.       Else 
  2152.          N$=XDIRA$(I)
  2153.          N=XSTATUSA(I)
  2154.       End If 
  2155.       _REALNAME[N$]
  2156.       If N
  2157.          _TXT[XFILE$+"... now actual printer !"]
  2158.          I=A
  2159.          XPREF$=Space$(232)+Chr$(0)
  2160.          Areg(0)=Varptr(XPREF$)
  2161.          Dreg(0)=232
  2162.          LVOGETPREFS=Intcall(-132)
  2163.          '
  2164.          L30=Len(XFILE$)+128
  2165.          For I2=128 To L30
  2166.             Poke LVOGETPREFS+I2,Peek(Varptr(XFILE$)+I3) : Inc I3
  2167.          Next I2
  2168.          For I2=L30 To 157
  2169.             Poke LVOGETPREFS+I2,0
  2170.          Next I2
  2171.          '
  2172.          Areg(0)=LVOGETPREFS
  2173.          Dreg(0)=232
  2174.          Dreg(1)=-1
  2175.          LVOSETPREFS=Intcall(-324)
  2176.       End If 
  2177.    Next I
  2178.    If XSD=0
  2179.       _CLEAR[1]
  2180.    Else 
  2181.       _CLEAR[0]
  2182.    End If 
  2183. End Proc
  2184. Procedure _PRINT
  2185.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  2186.    '
  2187.    On Error Goto _FEHLER
  2188.    '
  2189.    Set Input 10,-1
  2190.    Open Port 1,"PRT:"
  2191.       If XE<>0 : Pop Proc : End If 
  2192.       For I=0 To A
  2193.          If XSD=0
  2194.             N$=XDIRB$(I)
  2195.             N=XSTATUSB(I)
  2196.          Else 
  2197.             N$=XDIRA$(I)
  2198.             N=XSTATUSA(I)
  2199.          End If 
  2200.          _REALNAME[N$]
  2201.          If N=1 and Instr(N$,"[DIR]")=0
  2202.             _TXT["Printing... "+XFILE$+" < ESC = Abort > !"]
  2203.             If Exist(B$+XFILE$)
  2204.                Open In 2,B$+XFILE$
  2205.                   While Not Eof(2)
  2206.                      Line Input #2,N$
  2207.                      Print #1,N$
  2208.                      If Asc(Inkey$)=27 or XE<>0
  2209.                         _TXT["Printing aborted !"]
  2210.                         Exit 
  2211.                      End If 
  2212.                   Wend 
  2213.                _ENDPRINT:
  2214.                Close 2
  2215.             End If 
  2216.          End If 
  2217.       Next I
  2218.    Close 1
  2219.    If XSD=0
  2220.       _CLEAR[1]
  2221.    Else 
  2222.       _CLEAR[0]
  2223.    End If 
  2224.    Pop Proc
  2225. _FEHLER:
  2226.    XE=Errn
  2227.    _ERROR[XE]
  2228.    Resume Next 
  2229. End Proc
  2230. Procedure _FILEINFO
  2231.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  2232.    '
  2233.    Reserve As Chip Work 7,261
  2234.    '
  2235.    For I=0 To A
  2236.       If XSD=0
  2237.          N$=XDIRB$(I)
  2238.          N=XSTATUSB(I)
  2239.       Else 
  2240.          N$=XDIRA$(I)
  2241.          N=XSTATUSA(I)
  2242.       End If 
  2243.       If N<>0
  2244.          _REALNAME[N$]
  2245.          If Exist(B$+XFILE$)
  2246.             N$=B$+XFILE$+Chr$(0)
  2247.             N=Start(7)
  2248.             '
  2249.             Dreg(1)=Varptr(N$)
  2250.             Dreg(2)=-2
  2251.             LVOLOCK=Doscall(-84)
  2252.             '
  2253.             Dreg(1)=LVOLOCK
  2254.             Dreg(2)=N
  2255.             LVOEXAMINE=Doscall(-102)
  2256.             '
  2257.             Dreg(1)=LVOLOCK
  2258.             LVOUNLOCK=Doscall(-90)
  2259.             '
  2260.             If Asc(Inkey$)=27 : Erase 7 : Pop Proc : End If 
  2261.             '
  2262.             N$=Bin$(Leek(N+116),8)-"%"
  2263.             P=Varptr(N$)
  2264.             If Peek(P)=49 : Poke P,104 Else Poke P,45 : End If 
  2265.             If Peek(P+1)=49 : Poke P+1,115 Else Poke P+1,45 : End If 
  2266.             If Peek(P+2)=49 : Poke P+2,112 Else Poke P+2,45 : End If 
  2267.             If Peek(P+3)=49 : Poke P+3,97 Else Poke P+3,45 : End If 
  2268.             If Peek(P+4)=48 : Poke P+4,114 Else Poke P+4,45 : End If 
  2269.             If Peek(P+5)=48 : Poke P+5,119 Else Poke P+5,45 : End If 
  2270.             If Peek(P+6)=48 : Poke P+6,101 Else Poke P+6,45 : End If 
  2271.             If Peek(P+7)=48 : Poke P+7,100 Else Poke P+7,45 : End If 
  2272.             I$=Left$(XFILE$,23) : I$=I$+Space$(26-Len(I$))
  2273.             X=Leek(N+132)
  2274.             X=X mod 365
  2275.             X=Min(12,(X/30)+1)
  2276.             If X<10 : O$=" " Else O$="" : End If 
  2277.             XJ$=O$+Str$(X)-" "+"/"
  2278.             X=Leek(N+132)/365+78
  2279.             XJ$=XJ$+Str$(X)-" "
  2280.             X=Leek(N+136)/60
  2281.             If X<10 : O$="0" Else O$="" : End If 
  2282.             XD$=O$+Str$(X)+":"
  2283.             X=Leek(N+136) mod 60
  2284.             If X<10 : O$="0" Else O$="" : End If 
  2285.             XD$=XD$+O$+Str$(X)+":"
  2286.             X=Leek(N+140)/50
  2287.             If X<10 : O$="0" Else O$="" : End If 
  2288.             XD$=(XD$+O$+Str$(X))-" "
  2289.             If Leek(N+4)<0
  2290.                P$=Str$(Leek(N+124))-" " : I$=I$+Space$(7-Len(P$))+P$
  2291.                P$=Str$(Leek(N+128))-" " : I$=I$+Space$(6-Len(P$))+P$
  2292.             Else 
  2293.                I$=I$+Space$(10)+"Dir"
  2294.             End If 
  2295.             I$=I$+"   "+N$+"   "+XJ$+"   "+XD$
  2296.             For I2=144 To 260
  2297.                C=Peek(N+I2)
  2298.                If C<>0
  2299.                   C$=C$+Chr$(C)
  2300.                Else 
  2301.                   I2=260
  2302.                End If 
  2303.             Next I2
  2304.             _TXT[I$]
  2305.             If C$<>"" : _TXT[": "+C$] : End If 
  2306.             C$=""
  2307.          Else 
  2308.             _TXT[XFILE$+" not found !"]
  2309.          End If 
  2310.       End If 
  2311.    Next I
  2312.    '
  2313.    Erase 7
  2314.    If XSD=0 Then _CLEAR[1] Else _CLEAR[0]
  2315. End Proc
  2316. Procedure _HJOIN
  2317.    _DPROTECT
  2318.    If XPROTECT<82 Then Pop Proc
  2319.    '
  2320.    If XSD=0
  2321.       A=XANZA#
  2322.       A$=XDISKNAMEA$
  2323.       B$=XDISKNAMEB$
  2324.    Else 
  2325.       A=XANZB#
  2326.       A$=XDISKNAMEB$
  2327.       B$=XDISKNAMEA$
  2328.    End If 
  2329.    '
  2330.    On Error Goto _FEHLER
  2331.    '
  2332.    For I=0 To A
  2333.       If XSD=0
  2334.          N$=XDIRA$(I)
  2335.          N=XSTATUSA(I)
  2336.       Else 
  2337.          N$=XDIRB$(I)
  2338.          N=XSTATUSB(I)
  2339.       End If 
  2340.       _REALNAME[N$]
  2341.       If N>0 and Instr(N$,"[DIR]")=0
  2342.          If NA$=""
  2343.             NA$=A$+XFILE$
  2344.          Else 
  2345.             NB$=A$+XFILE$
  2346.             Goto _HJOIN
  2347.          End If 
  2348.       End If 
  2349.    Next I
  2350.    Pop Proc
  2351. '
  2352. _HJOIN:
  2353.    _TXT["Outputfile: "+B$]
  2354.    _EINGABE[13+Len(B$)]
  2355.    If XFILE$="" Then _TXT["Horizontal joining aborted !"] : Pop Proc
  2356.    NC$=B$+XFILE$
  2357.    _TXT["No. of spaces:"]
  2358.    _EINGABE[16]
  2359.    S=Val(XFILE$)
  2360.    '
  2361.    If Exist(NA$)=True and Exist(NB$)=True
  2362.       _TXT["Please wait while horizontal joining <ESC = Abort> !"]
  2363.       Set Input 10,-1
  2364.       Open Out 1,NC$
  2365.          If XE : Pop Proc : End If 
  2366.       Open In 2,NA$
  2367.       Open In 3,NB$
  2368.          Repeat 
  2369.             N0$=""
  2370.             N1$=""
  2371.             If N0=False
  2372.                If Eof(2)=False
  2373.                   Line Input #2,N0$
  2374.                Else 
  2375.                   N0=True
  2376.                End If 
  2377.             End If 
  2378.             If N1=False
  2379.                If Eof(3)=False
  2380.                   Line Input #3,N1$
  2381.                Else 
  2382.                   N1=True
  2383.                End If 
  2384.             End If 
  2385.             If Len(N0$+N1$)>0
  2386.                N$=N0$+Space$(S)+N1$+Chr$(10)
  2387.                Print #1,N$;
  2388.             End If 
  2389.             If Asc(Inkey$)=27 or XE<>0 : N0$="" : N1$="" : End If 
  2390.          Until Len(N0$+N1$)=0
  2391.       Close 3
  2392.       Close 2
  2393.       Close 1
  2394.    Else 
  2395.       _ERROR[94]
  2396.    End If 
  2397.    If XSD=0
  2398.       _CLEAR[0] : _LESEDISK[XDISKNAMEB$,1]
  2399.    Else 
  2400.       _CLEAR[1] : _LESEDISK[XDISKNAMEA$,0]
  2401.    End If 
  2402.    Pop Proc
  2403.    '
  2404. _FEHLER:
  2405.    XE=Errn
  2406.    _ERROR[XE]
  2407.    Resume Next 
  2408. End Proc
  2409. Procedure _CLI
  2410.    If Exist("SYS:")
  2411.       Dir$="SYS:"
  2412.    Else 
  2413.       _TXT["SYS: not available !"]
  2414.       Pop Proc
  2415.    End If 
  2416.    _TXT[""]
  2417.    Do 
  2418.       _EINGABE[1]
  2419.       Exit If XFILE$=""
  2420.       _TXT[""]
  2421.       _RUN[False]
  2422.    Loop 
  2423. End Proc
  2424. Procedure _EXIT
  2425.    If Exist("SYS:") Then Dir$="SYS:"
  2426.    Request On 
  2427.    Wait 30
  2428.    End 
  2429. End Proc
  2430. '
  2431. '**** Men� 5-8   
  2432. Procedure _CREATE
  2433.    On Error Goto _FEHLER
  2434.    Do 
  2435.       _TXT["Select gadget for new command <CREATE=Save/Abort>"]
  2436.       Repeat : Until Mouse Key=0
  2437.       While Mouse Key=0 : Wend 
  2438.       X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  2439.       '
  2440.       If Y>194 and Y<208
  2441.          X=X/80 : Y=195
  2442.          _G[X*80+1,195,X*80+78,207,1]
  2443.       End If 
  2444.       If X<558 and Y>209 and Y<223
  2445.          X=X/80 : Y=210
  2446.          _G[X*80+1,210,X*80+78,222,1]
  2447.          Add X,8
  2448.       End If 
  2449.       '
  2450.       If X>13 and Y>209 and Y<223 Then Clear Key : Exit 
  2451.       I2=True
  2452.       '
  2453.       Ink 1 : _TXT["Enter menuname:"]
  2454.       _EINGABE[17]
  2455.       N$=XFILE$
  2456.       Ink 1 : _TXT["Enter commandline:"]
  2457.       _EINGABE[20]
  2458.       N$=N$+"="+XFILE$
  2459.       If N$="=" Then N$=""
  2460.       For I=0 To 31 : N$=N$-Chr$(I) : Next I
  2461.       XMEND$(XMENABCD-4,X)=N$
  2462.       '
  2463.       _MENU
  2464.       If X>7 Then Add X,-8
  2465.       _G[X*80+1,Y,X*80+78,Y+12,0]
  2466.    Loop 
  2467.    '
  2468.    If I2
  2469.       If Exist("SYS:S/")
  2470.          Open Out 1,"SYS:S/.ambosmenu"
  2471.             If XE : Pop Proc : End If 
  2472.             For I=0 To 3
  2473.                For I2=0 To 13
  2474.                   Print #1,XMEND$(I,I2)
  2475.                Next I2
  2476.             Next I
  2477.          Close 1
  2478.       Else 
  2479.          _TXT["SYS:S/ not available !"]
  2480.       End If 
  2481.    End If 
  2482. Pop Proc
  2483. '
  2484. _FEHLER:
  2485.    XE=Errn
  2486.    _ERROR[XE]
  2487.    Resume Next 
  2488. End Proc
  2489. '
  2490. '**** Unterfunktionen
  2491. Procedure _ALL[N]
  2492.    If N=0
  2493.       For I=0 To XANZA#
  2494.          If XSTATUSA(I)<>-2 : XSTATUSA(I)=1 : End If 
  2495.       Next I
  2496.       _SHOWDIR[0]
  2497.    Else 
  2498.       For I=0 To XANZB#
  2499.          If XSTATUSB(I)<>-2 : XSTATUSB(I)=1 : End If 
  2500.       Next I
  2501.       _SHOWDIR[1]
  2502.    End If 
  2503. End Proc
  2504. Procedure _CALLCOMMAND[N]
  2505.    Wait 15
  2506.    N$=XMEND$(XMENABCD-4,N)
  2507.    If N$="" Then Pop Proc
  2508.    If N$="CREATE=" Then _CREATE : Pop Proc
  2509.    N=Instr(N$,"=")
  2510.    N$=Mid$(N$,N+1,Len(N$)-N)+Chr$(0)
  2511.    XFILE$=N$
  2512.    _RUN[True]
  2513. End Proc
  2514. Procedure _CLEAR[N]
  2515.    If N=0
  2516.       For I=0 To XANZA#
  2517.          If XSTATUSA(I)<>-2 : XSTATUSA(I)=0 : End If 
  2518.       Next I
  2519.       _SHOWDIR[0]
  2520.    Else 
  2521.       For I=0 To XANZB#
  2522.          If XSTATUSB(I)<>-2 : XSTATUSB(I)=0 : End If 
  2523.       Next I
  2524.       _SHOWDIR[1]
  2525.    End If 
  2526. End Proc
  2527. Procedure _DISKIT[N]
  2528.    If XSD=0 Then B$=XDISKNAMEB$ : A=XANZB# Else B$=XDISKNAMEA$ : A=XANZA#
  2529.    '
  2530.    On Error Goto _FEHLER
  2531.    '
  2532.    If N<3
  2533.       _TXT["Targetdrive (0-3):"]
  2534.       _EINGABE[20]
  2535.       XTARGET=Abs(Val(XFILE$))
  2536.       N1$="DF"+Str$(XTARGET)-" "+":"
  2537.       If Drive(N1$)=0
  2538.          _TXT[N1$+" not available !"]
  2539.          Pop Proc
  2540.       End If 
  2541.    End If 
  2542.    '
  2543.    If N=1
  2544.       _TXT["Insert targetdisk in drive "+N1$+" !"]
  2545.       _TXT["Press any key when ready <ESC = Abort> !"]
  2546.       Repeat 
  2547.          N0=Asc(Inkey$)
  2548.       Until N0
  2549.       If N0=27
  2550.          _TXT["Process aborted !"]
  2551.          Pop Proc
  2552.       End If 
  2553.    End If 
  2554.    '
  2555.    If N=3
  2556.       _TXT["Sourcedrive (0-3):"]
  2557.       _EINGABE[20]
  2558.       XTARGET=Abs(Val(XFILE$))
  2559.       N0$="DF"+Str$(XTARGET)-" "+":"
  2560.       If Drive(N0$)=0
  2561.          _TXT[N0$+" not available !"]
  2562.          Pop Proc
  2563.       End If 
  2564.       _TXT["Startblock (0-1758):"]
  2565.       _EINGABE[22]
  2566.       N0=Abs(Val(XFILE$))
  2567.       N0=Min(1758,N0)
  2568.       _TXT["Endblock ("+Str$(N0)-" "+"-1759):"]
  2569.       _EINGABE[18+Len(Str$(N0))]
  2570.       N1=Abs(Val(XFILE$))
  2571.       N1=Min(1759,N1)
  2572.       If N0>N1 : Swap N0,N1 : End If 
  2573.       _TXT["Filename:"]
  2574.       _EINGABE[11]
  2575.       If XFILE$=""
  2576.          _TXT["Block to file aborted !"]
  2577.          Pop Proc
  2578.       End If 
  2579.    End If 
  2580.    '
  2581.    If N=4
  2582.       If XSD=0
  2583.          B$=XDISKNAMEA$
  2584.          A=XANZA#
  2585.       Else 
  2586.          B$=XDISKNAMEB$
  2587.          A=XANZB#
  2588.       End If 
  2589.       '
  2590.       For I=0 To A
  2591.          If XSD=0
  2592.             N$=XDIRA$(I)
  2593.             B=XSTATUSA(I)
  2594.          Else 
  2595.             N$=XDIRB$(I)
  2596.             B=XSTATUSB(I)
  2597.          End If 
  2598.          If B=-2
  2599.             Pop Proc
  2600.          End If 
  2601.          If B=1 and Instr(N$,"[DIR]")=0
  2602.             FGR=Val(Right$(N$,8))
  2603.             _REALNAME[N$]
  2604.             N$=B$+XFILE$
  2605.             I=A
  2606.          End If 
  2607.       Next I
  2608.       If B=0
  2609.          _TXT["No file selected !"]
  2610.          Pop Proc
  2611.       End If 
  2612.       _TXT["Targetdrive (0-3):"]
  2613.       _EINGABE[20]
  2614.       XTARGET=Abs(Val(XFILE$))
  2615.       N0$="DF"+Str$(XTARGET)-" "+":"
  2616.       If Drive(N0$)=0
  2617.          _TXT[N0$+" not available !"]
  2618.          Pop Proc
  2619.       End If 
  2620.       _TXT[N$+" to block (0-1759):"]
  2621.       _EINGABE[21+Len(N$)]
  2622.       N0=Abs(Val(XFILE$))
  2623.       N0=Min(1759,N0)
  2624.    End If 
  2625.    '
  2626.    If N=5
  2627.       _TXT["Sourcedrive (0-3):"]
  2628.       _EINGABE[20]
  2629.       XTARGET=Abs(Val(XFILE$))
  2630.       N0$="DF"+Str$(XTARGET)-" "+":"
  2631.       If Drive(N0$)=0
  2632.          _TXT[N0$+" not available !"]
  2633.          Pop Proc
  2634.       End If 
  2635.    End If 
  2636.    '
  2637.    Reserve As Chip Data 7,5632
  2638.    DISKREP$=Space$(40)+Chr$(0)
  2639.    DEVNAME$="trackdisk.device"+Chr$(0)
  2640.    IOREQ$=Space$(80)+Chr$(0)
  2641.    DISKREP=Varptr(DISKREP$)
  2642.    IOREQADR=Varptr(IOREQ$)
  2643.    Areg(0)=0
  2644.    Areg(1)=0
  2645.    Dreg(0)=0
  2646.    Dreg(1)=0
  2647.    XFINDTASK=Execall(-294)
  2648.    Loke DISKREP+$10,XFINDTASK
  2649.    Areg(0)=Varptr(DEVNAME$)
  2650.    Areg(1)=IOREQADR
  2651.    Dreg(0)=XTARGET
  2652.    Dreg(1)=0
  2653.    LVOOPENDEVICE=Execall(-444)
  2654.    '
  2655.    Loke IOREQADR+14,DISKREP
  2656.    Loke IOREQADR+40,Start(7)
  2657.    Doke IOREQADR+28,11
  2658.    Loke IOREQADR+36,5632
  2659.    '
  2660.    On N Gosub _FORMAT,_INSTALL,_BLKDAT,_DATBLK,_VERIFY
  2661.    '
  2662.    Doke IOREQADR+28,10
  2663.    Loke IOREQADR+44,0
  2664.    LVODOIO=Execall(-456)
  2665.    '
  2666.    Doke IOREQADR+28,9
  2667.    Loke IOREQADR+36,0
  2668.    LVODOIO=Execall(-456)
  2669.    LVOCLOSEDEVICE=Execall(-450)
  2670.    '
  2671.    Erase 7
  2672. Pop Proc
  2673. '
  2674. _FORMAT:
  2675.    _TXT[""]
  2676.    For TRACK=0 To 159
  2677.       Text 22,250,"Formatting cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
  2678.       Loke IOREQADR+44,TRACK*5632
  2679.       LVODOIO=Execall(-456)
  2680.       If LVODOIO
  2681.          _TXT["TDERR #"+Str$(LVODOIO)+" occured !"]
  2682.          Return 
  2683.       End If 
  2684.       If Asc(Inkey$)=27 Then _TXT["Format aborted !"] : Return 
  2685.       Add I,I2
  2686.       Add I2,1,0 To 1
  2687.    Next TRACK
  2688.    N=Start(7)
  2689.    For I=$204 To $2DF
  2690.       Poke N+I,$FF
  2691.    Next I
  2692.    Doke N+2,$2
  2693.    Poke N+15,$48
  2694.    Loke N+20,$A661AEF3
  2695.    Doke N+$13A,$1
  2696.    Doke N+$13E,$371
  2697.    Poke N+$1B0,$5
  2698.    Poke N+$1B1,$45
  2699.    Poke N+$1B2,$4D
  2700.    Poke N+$1B3,$50
  2701.    Poke N+$1B4,$54
  2702.    Poke N+$1B5,$59
  2703.    Poke N+$1FF,$1
  2704.    Loke N+$200,$C000C037
  2705.    Poke N+$272,$3F
  2706.    Poke N+$2DC,$3F
  2707.    Doke IOREQADR+28,11
  2708.    Loke IOREQADR+44,$6E000
  2709.    LVODOIO=Execall(-456)
  2710.    Gosub _INSTALLII
  2711.    _TXT["Please remove disk to inform validator !"]
  2712. Return 
  2713. '
  2714. _INSTALL:
  2715.    _TXT["What bootblock ?"]
  2716.    _TXT["[N]oBoot / [D]osBoot / [Q]uartexBoot:"]
  2717.    _EINGABE[39]
  2718.    N$=Upper$(XFILE$)
  2719.    If N$="" Then _TXT["Install aborted !"] : Return 
  2720. _INSTALLII:
  2721.    If N$<>"N" and(N$<>"Q") Then N$="D"
  2722.    For I=0 To 1024 : Poke Start(7)+I,0 : Next I
  2723.    If N$="N"
  2724.       Read N : Loke Start(7),N
  2725.    End If 
  2726.    If N$="D"
  2727.       Restore _DOSBOOT
  2728.       For I=0 To 12 : Read N : Loke Start(7)+I*4,N : Next I
  2729.    End If 
  2730.    If N$="Q"
  2731.       Restore _QUARTEXBOOT
  2732.       For I=0 To 255 : Read N : Loke Start(7)+I*4,N : Next I
  2733.    End If 
  2734.    '
  2735.    Doke IOREQADR+28,3
  2736.    Loke IOREQADR+36,1024
  2737.    Loke IOREQADR+44,0
  2738.    LVODOIO=Execall(-456)
  2739.    Doke IOREQADR+28,4
  2740.    LVODOIO=Execall(-456)
  2741.    If LVODOIO<>0 Then _TXT["TDERR #"+Str$(LVODOIO)-" "+" occured !"]
  2742. Return 
  2743. '
  2744. _BLKDAT:
  2745.    Open Out 1,B$+XFILE$
  2746.       If XE Then Return 
  2747.    Close 1
  2748.    Doke IOREQADR+28,2
  2749.    Loke IOREQADR+36,512
  2750.    N$=B$+XFILE$+Chr$(0)
  2751.    Dreg(1)=Varptr(N$)
  2752.    Dreg(2)=1006
  2753.    LVOOPEN=Doscall(-30)
  2754.    _TXT["Working block:"]
  2755.    For I=N0 To N1
  2756.       Text 134,250,Str$(I)
  2757.       Loke IOREQADR+44,I*512
  2758.       LVODOIO=Execall(-456)
  2759.       If LVODOIO<>0
  2760.          _TXT["TDERR #"+Str$(LVODOIO)-" "+" occured !"]
  2761.          I=N1
  2762.       End If 
  2763.       Dreg(1)=LVOOPEN
  2764.       Dreg(2)=Start(7)
  2765.       Dreg(3)=512
  2766.       LVOWRITE=Doscall(-48)
  2767.       If LVOWRITE<>512
  2768.          _TXT["DOS error occured !"]
  2769.          I=N1
  2770.       End If 
  2771.    Next I
  2772.    Dreg(1)=LVOOPEN
  2773.    LVOCLOSE=Doscall(-36)
  2774.    If XSD=0
  2775.       _LESEDISK[B$,1]
  2776.    Else 
  2777.       _LESEDISK[B$,0]
  2778.    End If 
  2779. Return 
  2780. '
  2781. _DATBLK:
  2782.    Open In 1,N$
  2783.       If XE Then Return 
  2784.    Close 1
  2785.    _TXT["Blocks used: 0"]
  2786.    _TXT["Installed..: 0%   ( 0 bytes )"]
  2787.    N$=N$+Chr$(0)
  2788.    Dreg(1)=Varptr(N$)
  2789.    Dreg(2)=1005
  2790.    LVOOPEN=Doscall(-30)
  2791.    Dreg(1)=LVOOPEN
  2792.    Dreg(2)=Start(7)
  2793.    Dreg(3)=512
  2794.    Loke IOREQADR+36,512
  2795.    For I=0 To FGR Step 512
  2796.       LVOREAD=Doscall(-42)
  2797.       Doke IOREQADR+28,3
  2798.       Loke IOREQADR+44,N0*512+I
  2799.       LVODOIO=Execall(-456)
  2800.       If LVODOIO<>0
  2801.          _TXT["TDERR #"+Str$(LVODOIO)-" "+" occured !"]
  2802.          I=FGR
  2803.       Else 
  2804.          Text 118,242,Str$(I/512)
  2805.          Text 118,250,Str$(100.0/FGR*(I+LVOREAD))+"%"+"   ("+Str$(I+LVOREAD)+" bytes )"
  2806.       End If 
  2807.       If LVOREAD<512 Then I=FGR
  2808.       If Asc(Inkey$)=27 Then I=FGR
  2809.    Next I
  2810.    Doke IOREQADR+28,4
  2811.    LVODOIO=Execall(-456)
  2812.    Dreg(1)=LVOOPEN
  2813.    LVOCLOSE=Doscall(-36)
  2814. Return 
  2815. '
  2816. _VERIFY:
  2817.    _TXT[""]
  2818.    Doke IOREQADR+28,2
  2819.    For TRACK=0 To 159
  2820.       Text 22,250,"Verifying cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
  2821.       If Asc(Inkey$)=27 Then _TXT["Verify aborted !"] : Return 
  2822.       Loke IOREQADR+44,TRACK*5632
  2823.       LVODOIO=Execall(-456)
  2824.       If LVODOIO=29 Then _TXT["No disk in drive !"] : Return 
  2825.       If LVODOIO<>0
  2826.          Text 22,250,"TDERR #"+Str$(LVODOIO)-" "+" on cylinder #"+Str$(I)-" "+" , head"+Str$(I2)+" !"
  2827.          If I<79 : _TXT[""] : End If 
  2828.          Inc I3
  2829.       End If 
  2830.       Add I,I2
  2831.       Add I2,1,0 To 1
  2832.    Next TRACK
  2833.    _TXT["# of diskerrors:"+Str$(I3)+" !"]
  2834. Return 
  2835. '
  2836. _NOBOOT:
  2837. Data $444F5300
  2838. _DOSBOOT:
  2839. Data $444F5300,$C0200F19,$370,$43FA0018,$4EAEFFA0,$4A80670A,$20402068
  2840. Data $167000,$4E7570FF,$60FA646F,$732E6C69,$62726172,$79000000
  2841. _QUARTEXBOOT:
  2842. Data $444F5300,$1C2238A9,$370,$48E7FF7E,$70026100,$22E7009,$42A90024
  2843. Data $6100023A,$41FA03CC,$22690014,$20A9003C,$22690038,$2F0943FA,$2B8303C
  2844. Data $4E20222E,$3E0481,$80004,$6B043340,$1E4AAE,$4E6704,$3340000A
  2845. Data $43FA02B6,$207A0394,$41E80034,$4A986604,$33400008,$4A986604,$33400012
  2846. Data $4A986604,$3340001C,$4AAE002A,$660C4AAE,$2E6606,$4AAE022A,$671A43FA
  2847. Data $3237020,$1340001A,$12C012BC,$4145FA,$2D424FC,$56495249,$43F90007
  2848. Data $80002449,$4299B3FC,$7F000,$66F62C57,$33FC01A0,$DFF096,$43FA01CE
  2849. Data $2D490032,$41F90007,$1000214A,$87001,$223C0000,$300243C,$100
  2850. Data $4EAEFE7A,$43F90007,$11004EAE,$FF3A43F9,$71100,$237C0007,$10000004
  2851. Data $70014EAE,$FEAA4BFA,$1C87800,$7632181D,$672E610E,$6830000,$1806106
  2852. Data $4BED001F,$60E843F9,$71100,$20032204,$4EAEFF10,$43F90007,$1100204D
  2853. Data $701F4EAE,$FFC44E75,$33FC8380,$DFF096,$283C000F,$F0002C78,$45384
  2854. Data $670000B8,$43FA025A,$C110041,$661243FA,$1663011,$2400F00,$6400100
  2855. Data $32805284,$4BF900BF,$E0010815,$66700,$8E102D,$C00422D,$C004600
  2856. Data $B03C00A0,$670000D4,$B03C00A2,$660A203C,$80000,$600000C8,$B03C00A4
  2857. Data $66164BF9,$FC00D0,$42AE0026,$4EAEFFE2,$41F80002,$4E704ED0,$B03C00A6
  2858. Data $6738B03C,$A86606,$4BFAFFEA,$60DEB03C,$AA6756,$B03C00AC,$66040855
  2859. Data $1B03C,$AE6612,$47FA020C,$32130841,$53681,$33C100DF,$F1DC6000
  2860. Data $FF52207A,$1F241E8,$3470FF,$20C020C0,$20806112,$43FA01E6,$4EAEFFA0
  2861. Data $20402068,$167000,$4E75205F,$588F4CDF,$7EFF2F08,$4E7561F2,$700541F9
  2862. Data $50000,$610C7003,$61087004,$61046000,$FDCC41F9,$30000,$23480028
  2863. Data $237C0000,$4000024,$42A9002C,$3340001C,$4EAEFE38,$4E75202E,$3E204E
  2864. Data $4BF900FC,$2800C65,$21FC66FA,$99CC4DF8,$6762640,$43F900DF,$F096203C
  2865. Data $7FFF7FFF,$22C022C0,$4EE8FFE2,$1002200,$1020001,$920020,$9400D8
  2866. Data $8E3000,$9030FF,$E00007,$E28870,$E40007,$E688A0,$1860AAA
  2867. Data $1840EEE,$1820777,$1800002,$FFFFFFFE,$223C3C3C,$3C3C3C20,$5554494C
  2868. Data $49545920,$424F4F54,$2056322E,$30203E3E,$3E3E3E3E,$35464153,$544D454D
  2869. Data $3A4F4646,$20202020,$20203120,$4D454720,$43484950,$3A4F4646,$2C202044
  2870. Data $46313A4F,$46462020,$20444632,$3A4F4646,$20202044,$46333A4F,$46462020
  2871. Data $43463120,$46415354,$4D454D20,$4F464620,$46322043,$4849502F,$46415354
  2872. Data $204F4646,$4C463320,$414C4C20,$4D454D20,$4F4E2020,$4634204B,$494C4C20
  2873. Data $44524956,$45532120,$55463520,$48415244,$20524553,$45542020,$46362049
  2874. Data $4E535441,$4C4C2042,$4F4F5420,$5E463720,$544F4747,$4C45204C,$45442020
  2875. Data $46382054,$4F472050,$414C2F4E,$54534320,$6C20204E,$4F205649,$52555320
  2876. Data $48415320,$4245454E,$20444554,$45435445,$44212020,$75424F4F,$54204259
  2877. Data $20204E2E,$4F2E4D2E,$412E4420,$204F4620,$51554152,$54455821,$0
  2878. Data $0,$646F732E,$6C696272,$61727900
  2879. '
  2880. _FEHLER:
  2881.    XE=Errn
  2882.    _ERROR[XE]
  2883. Resume Next 
  2884. End Proc
  2885. Procedure _DPROTECT
  2886.    If XSD=0 Then DEV$=XDISKNAMEB$ Else DEV$=XDISKNAMEA$
  2887.    '
  2888.    XPROTECT=0
  2889.    If DEV$="" Then _TXT["No drive selected !"] : Pop Proc
  2890.    If Not Exist(DEV$) Then _TXT[DEV$+" not available !"] : Pop Proc
  2891.    '
  2892.    Dir$=DEV$
  2893.    DEV$=Dir$
  2894.    DEV$=DEV$+Chr$(0)
  2895.    Repeat 
  2896.       INFO$=Space$(40)+Chr$(0)
  2897.       IN=Varptr(INFO$)
  2898.       Dreg(1)=Varptr(DEV$)
  2899.       Dreg(2)=-2
  2900.       LVOLOCK=Doscall(-84)
  2901.       Dreg(1)=LVOLOCK
  2902.       Dreg(2)=IN
  2903.       LVOINFO=Doscall(-114)
  2904.       LVOUNLOCK=Doscall(-90)
  2905.    Until Leek(IN+8)<84
  2906.    '
  2907.    XPROTECT=Leek(IN+8)
  2908.    If XPROTECT=80 Then _TXT["Disk is write protected !"]
  2909.    If XPROTECT=81 Then _TXT["Error occured... disk is not validated !"]
  2910. End Proc
  2911. Procedure _EDIT[B$,NF$,FGR]
  2912.    On Error Goto _FEHLER
  2913.    FGR2=FGR/80
  2914.    HELP$="Name: "+NF$+"     Size:"+Str$(FGR)+"     Lines max:"+Str$(FGR2)
  2915.    _TXT[HELP$]
  2916.    Ink 0 : Bar 0,15 To 640,223
  2917.    Ink 1
  2918.    Text 7,219,"Asc: 000   Hex: $00   Line: 00000   Pos: 000000   Search   Save as   ?   Abort"
  2919.    Gosub _G0
  2920.    Gosub _SHOW
  2921.    '
  2922.    Do 
  2923.       A$=Inkey$
  2924.       MK=Mouse Key
  2925.       If A$<>"" Then Gosub _TASTE
  2926.       If MK<>0
  2927.          Gosub _MAUS
  2928.          Gosub _G0
  2929.       End If 
  2930.    Loop 
  2931.    '
  2932. _TASTE:
  2933.    N=Asc(A$)
  2934.    If N=13 and I4<FGR2
  2935.       Add I3,1920
  2936.       I3=Min(I3,FGR-80)
  2937.       I3=Max(0,I3)
  2938.       If I4<FGR2 : Gosub _SHOW : End If 
  2939.       Clear Key 
  2940.       Return 
  2941.    End If 
  2942.    If N=27
  2943.       I3=Max(0,I3-1920)
  2944.       I4=Max(0,I4-48)
  2945.       Gosub _SHOW
  2946.       Clear Key 
  2947.       Return 
  2948.    End If 
  2949.    If N>27 and N<32 Then Gosub _ASCHEX : Return 
  2950.    If N>31 Then Gosub _POKE : Clear Key 
  2951. Return 
  2952. '
  2953. _MAUS:
  2954.    X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
  2955.    If Y>209 and Y<223
  2956.       If X>174 and X<278
  2957.          _G[175,210,277,222,1]
  2958.          _TXT["Enter linenumber:"]
  2959.          _EINGABE[19]
  2960.          I4=Abs(Val(XFILE$))
  2961.          I4=Min(I4,FGR2)
  2962.          I3=I4*80
  2963.          Gosub _SHOW
  2964.       End If 
  2965.       If X<81
  2966.          _G[0,210,80,222,1]
  2967.          _TXT["Enter ASCII value:"]
  2968.          _EINGABE[20]
  2969.          N=Min(255,Abs(Val(XFILE$)))
  2970.          Gosub _POKE
  2971.       End If 
  2972.       If X>87 and X<167
  2973.          _G[88,210,166,222,1]
  2974.          _TXT["Enter HEX value: $"]
  2975.          _EINGABE[19]
  2976.          XFILE$=Left$(XFILE$,2)
  2977.          XFILE$=Upper$(XFILE$)
  2978.          N=Val("$"+XFILE$)
  2979.          Gosub _POKE
  2980.       End If 
  2981.       If X>285 and X<391
  2982.          _G[286,210,390,222,1]
  2983.          _TXT["Enter position:"]
  2984.          _EINGABE[17]
  2985.          N=Min(FGR-1,Abs(Val(XFILE$)))
  2986.          CX=N mod 80
  2987.          I4=N/80
  2988.          I3=I4*80+CX
  2989.          Gosub _SHOW
  2990.       End If 
  2991.       If X>397 and X<464
  2992.          _G[398,210,463,222,1]
  2993.          _TXT["String to search:"]
  2994.          _EINGABE[19]
  2995.          If XFILE$=""
  2996.             _TXT["Search aborted !"]
  2997.             Return 
  2998.          End If 
  2999.          N$=XFILE$
  3000.          _TXT["Startaddress:"]
  3001.          _EINGABE[15]
  3002.          N=Abs(Val(XFILE$))
  3003.          If N-Len(N$)=>FGR
  3004.             _TXT["Illegal value of address !"]
  3005.             Return 
  3006.          End If 
  3007.          N=Hunt(Start(7)+N To Start(7)+FGR,N$)
  3008.          If N
  3009.             Add N,-Start(7)
  3010.             CX=N mod 80
  3011.             I4=N/80
  3012.             I3=I4*80+CX
  3013.             Gosub _SHOW
  3014.          Else 
  3015.             _TXT["String  ï¿½ "+N$+" ï¿½  not found !"]
  3016.             Return 
  3017.          End If 
  3018.       End If 
  3019.       If X>469 and X<545
  3020.          _G[470,210,544,222,1]
  3021.          _TXT["From address <Return for start>:"]
  3022.          _EINGABE[34]
  3023.          N=Abs(Val(XFILE$))
  3024.          N=Min(N,FGR-1)
  3025.          _TXT["To address <Return for end>....:"]
  3026.          _EINGABE[34]
  3027.          C=Abs(Val(XFILE$))
  3028.          If C=0 : C=FGR : End If 
  3029.          C=Min(C,FGR)
  3030.          If N=>C
  3031.             _TXT["Illegal values for start- endaddress !"]
  3032.             Return 
  3033.          End If 
  3034.          _TXT["Filename <Return for old name> :"]
  3035.          _EINGABE[34]
  3036.          If XFILE$=""
  3037.             XFILE$=NF$
  3038.          End If 
  3039.          _TXT["Writing datas to "+B$+XFILE$+" !"]
  3040.          Bsave B$+XFILE$,Start(7)+N To Start(7)+C
  3041.       End If 
  3042.       If X>551 and X<575
  3043.          _G[552,210,574,222,1]
  3044.          _TXT[HELP$]
  3045.       End If 
  3046.       If X>581 and X<639
  3047.          _G[582,210,638,222,1]
  3048.          Wait 50
  3049.          Pop Proc
  3050.       End If 
  3051.    End If 
  3052. Return 
  3053. '
  3054. _POKE:
  3055.    Poke Start(7)+I3+CX+CY*80,N
  3056.    If N<32 or(N>127 and N<160)
  3057.       N=46
  3058.    End If 
  3059.    Ink 1 : Text CX*8,CY*8+22,Chr$(N)
  3060.    Gosub _ASCHEX
  3061.    N=28
  3062.    Gosub _ASCHEX
  3063. Return 
  3064. '
  3065. _SHOW:
  3066.    Ink 0 : Bar 0,15 To 640,209
  3067.    Ink 1
  3068.    For I=0 To 23
  3069.       For I2=0 To 79
  3070.          If I*80+I2+I3<FGR
  3071.             C=Peek(Start(7)+I*80+I2+I3)
  3072.             If C<32 or(C>127 and C<160)
  3073.                C=46
  3074.             End If 
  3075.             XLINE$=XLINE$+Chr$(C)
  3076.          End If 
  3077.       Next I2
  3078.       Inc I4
  3079.       Text 0,I*8+22,XLINE$
  3080.       XLINE$=""
  3081.    Next I
  3082.    CX=0
  3083.    CY=0
  3084.    CXALT=0
  3085.    CYALT=0
  3086.    LINE=I4-1
  3087.    Add LINE,-23
  3088.    LINE=Max(0,LINE)
  3089.    Gosub _ASCHEX
  3090. Return 
  3091. '
  3092. _ASCHEX:
  3093.    C=I3+CX+CY*80
  3094.    If N=28 and CX<79 and C+1<FGR Then Inc CX
  3095.    If N=29 and CX>0 Then Dec CX
  3096.    If N=30 and CY>0 Then Dec CY : Dec LINE
  3097.    If N=31 and CY<23 and C+80<FGR Then Inc CY : Inc LINE
  3098.    C=Peek(Start(7)+I3+CX+CY*80)
  3099.    C$=" 000"
  3100.    C0$=Str$(C)-" "
  3101.    Right$(C$,Len(C0$))=C0$
  3102.    Text 47,219,C$-" "
  3103.    Text 135,219,Hex$(C,2)
  3104.    C$=" 000000"
  3105.    C0$=Str$(I3+CX+CY*80)-" "
  3106.    Right$(C$,Len(C0$))=C0$
  3107.    Text 335,219,C$-" "
  3108.    C$=" 00000"
  3109.    Right$(C$,Len(Str$(LINE))-1)=Str$(LINE)-" "
  3110.    Text 231,219,C$-" "
  3111.    If C<32 or(C>127 and C<161) Then C=46
  3112.    Ink 1,0 : Text CXALT*8,CYALT*8+22,Chr$(CALT)
  3113.    Ink 1,2 : Text CX*8,CY*8+22,Chr$(C)
  3114.    Ink 1,0
  3115.    CALT=C
  3116.    CXALT=CX
  3117.    CYALT=CY
  3118. Return 
  3119. '
  3120. _G0:
  3121.    _G[0,210,80,222,0]
  3122.    _G[88,210,166,222,0]
  3123.    _G[175,210,277,222,0]
  3124.    _G[286,210,390,222,0]
  3125.    _G[398,210,463,222,0]
  3126.    _G[470,210,544,222,0]
  3127.    _G[552,210,574,222,0]
  3128.    _G[582,210,638,222,0]
  3129. Return 
  3130. '
  3131. _FEHLER:
  3132.    XE=Errn
  3133.    _ERROR[XE]
  3134. Resume Next 
  3135. End Proc
  3136. Procedure _EINGABE[N]
  3137.    N=N*8+8
  3138.    XFILE$=""
  3139.    Text 6+N,250,Chr$(127)
  3140.    Ink 2,0
  3141.    Do 
  3142.       Repeat : I=Asc(Inkey$) : Multi Wait : Until I
  3143.       Exit If I=13
  3144.       If I<>8 and Len(XFILE$)<61
  3145.          XFILE$=XFILE$+Chr$(I)
  3146.       End If 
  3147.       If I=8 and Len(XFILE$)>0
  3148.          XFILE$=Left$(XFILE$,Len(XFILE$)-1)
  3149.       End If 
  3150.       Ink 2 : Text 6+N,250,XFILE$+Chr$(127)+" "
  3151.       Ink 1 : Text 6+N+Len(XFILE$)*8,250,Chr$(127)+" "
  3152.       Clear Key 
  3153.    Loop 
  3154.    Text 6+N+Len(XFILE$)*8,250," "
  3155.    Ink 1
  3156. End Proc
  3157. Procedure _ERROR[XE]
  3158.    If XE=11 Then N$="Out of variable space"
  3159.    If XE=24 Then N$="Out of memory"
  3160.    If XE=47 Then N$="Screen not opened"
  3161.    If XE=79 Then N$="File already exist"
  3162.    If XE=81 Then N$="File not found"
  3163.    If XE=82 Then N$="Illegal file name"
  3164.    If XE=84 Then N$="Disk is write protected"
  3165.    If XE=85 Then N$="Directory not empty"
  3166.    If XE=86 Then N$="Device not available"
  3167.    If XE=88 Then N$="Disc full"
  3168.    If XE=89 Then N$="File is protected against deletation"
  3169.    If XE=94 Then N$="I/O error"
  3170.    If XE=95 Then N$="File format not recognised"
  3171.    If N$="" Then N$="Illegal function call"
  3172.    _TXT[N$+" !  ï¿½ AMOS error #"+Str$(XE)-" "+" ï¿½"]
  3173. End Proc
  3174. Procedure _G[X,Y,X2,Y2,S]
  3175.    If S=0 Then C1=2 : C2=3 Else C1=3 : C2=2
  3176.    Ink C1 : Draw X,Y To X2-1,Y : Draw X,Y To X,Y2
  3177.    Ink C2 : Draw X+1,Y2 To X2,Y2 : Draw X2,Y To X2,Y2 : Ink 1,0
  3178. End Proc
  3179. Procedure _GETDEVICES[N]
  3180.    Dim XDEV$(50)
  3181.    Gosub L003
  3182.    If N=0
  3183.       Ink 0 : Bar 1,31 To 297,177
  3184.       For I2=0 To I
  3185.          XDIRA$(I2)=XDEV$(I2) : XSTATUSA(I2)=-2
  3186.       Next I2
  3187.       XPOSA=0 : XANZA#=I
  3188.       _SHOWDIR[0]
  3189.    Else 
  3190.       Ink 0 : Bar 342,31 To 638,177
  3191.       For I2=0 To I
  3192.          XDIRB$(I2)=XDEV$(I2) : XSTATUSB(I2)=-2
  3193.       Next I2
  3194.       XPOSB=0 : XANZB#=I
  3195.       _SHOWDIR[1]
  3196.    End If 
  3197.    Pop Proc
  3198. L003:
  3199.    If Drive("DF0:") Then XDEV$(0)="DF0:" : Inc I
  3200.    If Drive("DF1:") Then XDEV$(I)="DF1:" : Inc I
  3201.    If Drive("DF2:") Then XDEV$(I)="DF2:" : Inc I
  3202.    If Drive("DF3:") Then XDEV$(I)="DF3:" : Inc I
  3203.    If Drive("DH0:") Then XDEV$(I)="DH0:" : Inc I
  3204.    If Drive("VD0:") Then XDEV$(I)="VD0:" : Inc I
  3205.    XDEV$(I)="RAM:" : Inc I
  3206.    XDEV$(I)=Dev First$("")
  3207.    Do 
  3208.       If XDEV$(I)="" Then Dec I : Exit 
  3209.       I2=Instr(XDEV$(I),":")
  3210.       XDEV$(I)=Left$(XDEV$(I),I2)
  3211.       XDEV$(I)=Right$(XDEV$(I),I2-1)
  3212.       Inc I
  3213.       XDEV$(I)=Dev Next$
  3214.    Loop 
  3215.    Return 
  3216. End Proc
  3217. Procedure _HELP[MK,X,N]
  3218.    On Error Goto _FEHLER
  3219.    '
  3220.    XHELP=0
  3221.    XLIB$="SYS:LIBS/AmBOS.Lib"
  3222.    If N=1 Then Add X,8
  3223.    If XMENABCD<4
  3224.       If Exist(XLIB$)
  3225.          Restore Str$(XMENABCD)-" "
  3226.          For I=1 To X+1
  3227.             Read XPOS,XANZ
  3228.             If XPOS=0 and XANZ=0 : X=0 : Goto _NOTDEFINED : End If 
  3229.          Next I
  3230.          Set Input 10,-1
  3231.          I2=True
  3232.          Dec MK
  3233.          Open In 1,XLIB$
  3234.             Pof(1)=XPOS*76+MK*7753
  3235.             If XE
  3236.                Goto _ENDOFHELP
  3237.             End If 
  3238.             For I=1 To XANZ
  3239.                Inc I2
  3240.                If I2=3 : I2=0 : Wait Key : End If 
  3241.                Line Input #1,N$
  3242.                _TXT[N$-"*"]
  3243.             Next I
  3244.          _ENDOFHELP:
  3245.          Close 1
  3246.       Else 
  3247.          _TXT["Can`t open "+XLIB$]
  3248.       End If 
  3249.    Else 
  3250.       _NOTDEFINED:
  3251.       If X<14
  3252.          If XMENABCD-4=>0
  3253.             N$=XMEND$(XMENABCD-4,X)
  3254.          End If 
  3255.          If N$<>""
  3256.             _TXT[N$]
  3257.          Else 
  3258.             If MK=1
  3259.                _TXT["Men�option wurde noch nicht definiert !"]
  3260.             Else 
  3261.                _TXT["Menuoption is not defined yet !"]
  3262.             End If 
  3263.          End If 
  3264.       Else 
  3265.          If MK=1
  3266.             _TXT["Definiert eine Option mit einem CLI-Befehl !"]
  3267.          Else 
  3268.             _TXT["Defines an option with a CLI command !"]
  3269.          End If 
  3270.       End If 
  3271.    End If 
  3272. Pop Proc
  3273. '
  3274. 0 Data 0,1
  3275.   Data 1,2
  3276.   Data 3,2
  3277.   Data 5,2
  3278.   Data 7,1
  3279.   Data 8,1
  3280.   Data 9,1
  3281.   Data 10,2
  3282.   Data 12,1
  3283.   Data 13,2
  3284.   Data 15,2
  3285.   Data 17,2
  3286.   Data 19,2
  3287.   Data 21,2
  3288.   Data 23,1
  3289. 1 Data 24,1
  3290.   Data 25,2
  3291.   Data 27,2
  3292.   Data 29,1
  3293.   Data 30,1
  3294.   Data 31,3
  3295.   Data 34,4
  3296.   Data 38,2
  3297.   Data 40,2
  3298.   Data 42,2
  3299.   Data 44,1
  3300.   Data 45,2
  3301.   Data 47,1
  3302.   Data 48,2
  3303.   Data 50,1
  3304. 2 Data 51,2
  3305.   Data 53,2
  3306.   Data 55,1
  3307.   Data 56,2
  3308.   Data 58,2
  3309.   Data 60,2
  3310.   Data 62,1
  3311.   Data 63,18
  3312.   Data 81,2
  3313.   Data 83,1
  3314.   Data 84,1
  3315.   Data 85,3
  3316.   Data 88,1
  3317.   Data 89,2
  3318.   Data 91,3
  3319. 3 Data 94,1
  3320.   Data 95,1
  3321.   Data 96,1
  3322.   Data 97,1
  3323.   Data 98,3
  3324.   Data 101,1
  3325.   Data 0,0
  3326. '
  3327. _FEHLER:
  3328.    XE=Errn
  3329.    _ERROR[XE]
  3330.    Resume Next 
  3331. End Proc
  3332. Procedure _INSTALLAMBOS
  3333.    Screen Open 0,640,256,4,Hires
  3334.    Flash Off 
  3335.    Curs Off 
  3336.    Palette $77A,$124,$CCE,$557
  3337.    Colour Back $77A
  3338.    Colour 17,$FFF
  3339.    Colour 18,$0
  3340.    Colour 19,$E00
  3341. End Proc
  3342. Procedure _INSTALLSCREEN
  3343.    '* Pfeile
  3344.    '* ------
  3345.    Cls 0 : Ink 3 : For I=0 To 4 : Draw 5-I,1+I To 5+I,1+I : Next I : Bar 4,6 To 6,9 : Get Block 1,0,0,10,9,0 : Cls 0
  3346.    Put Block 1,304,154 : Put Block 1,325,154 : Vrev Block 1 : Put Block 1,304,169 : Put Block 1,325,169 : Del Block 1
  3347.    '
  3348.    '* Oben
  3349.    '* ----
  3350.    _G[110,0,529,12,0] : _G[0,0,107,12,0] : _G[532,0,639,12,0]
  3351.    '
  3352.    '* S Oben    
  3353.    '* ------
  3354.    _NEWGG[0] : _NEWGG[1]
  3355.    '
  3356.    _G[275,15,298,27,0] : _G[301,15,338,27,0] : _G[341,15,364,27,0]
  3357.    Ink 3 : Bar 307,19 To 312,23 : Bar 305,20 To 314,22
  3358.    Bar 318,20 To 332,22 : Draw 329,17 To 329,25 : Draw 330,18 To 330,24 : Draw 331,19 To 331,23 : Plot 333,21
  3359.    If XSD=1 Then XSD=0 : _SOURCEDEST
  3360.    Ink 2 : Text 283,24,Str$(X09A)-" " : Text 349,24,Str$(X09B)-" "
  3361.    '
  3362.    '* Balken
  3363.    '* ------
  3364.    _G[301,30,317,150,0] : _SCROLLBAR[0] : _G[301,152,317,164,0] : _G[301,166,317,178,0]
  3365.    _G[322,30,338,150,0] : _SCROLLBAR[1] : _G[322,152,338,164,0] : _G[322,166,338,178,0]
  3366.    _G[301,180,317,192,0] : Ink 3 : Bar 306,184 To 311,188 : Bar 304,185 To 313,187
  3367.    _G[322,180,338,192,0] : Ink 3 : Bar 327,184 To 332,188 : Bar 325,185 To 334,187
  3368.    '
  3369.    '* Dateifenster
  3370.    '* ------------
  3371.    _G[0,30,298,178,0] : _G[341,30,639,178,0]
  3372.    '
  3373.    _G[0,180,298,192,0] : _G[1,181,297,191,1]
  3374.    _G[341,180,639,192,0] : _G[342,181,638,191,1]
  3375.    '
  3376.    _OPTIONOFF
  3377.    _NEWMENU
  3378.    '
  3379.    _G[0,225,639,255,0] : _G[1,226,638,254,1]
  3380.    Ink 1,0 : For I=0 To 12 : Read X,Y,N$ : Text X,Y,N$ : Next I
  3381.    '
  3382.    _SHOWDIR[0] : _SHOWDIR[1] : Ink 1,0 : _SHOWNAME[0] : _SHOWNAME[1]
  3383.    '
  3384.    Def Scroll 1,2,34 To 296,178,0,-1
  3385.    Def Scroll 2,345,34 To 638,178,0,-1
  3386.    Def Scroll 3,2,31 To 296,176,0,1
  3387.    Def Scroll 4,345,31 To 638,176,0,1
  3388.    Def Scroll 5,6,229 To 636,253,0,-1
  3389.    '
  3390.    _MENU
  3391.    _MEMTIME
  3392.    Limit Mouse X Hard(0),Y Hard(0) To X Hard(639),Y Hard(255)
  3393.    '
  3394.    Data 6,9,"Mem:",542,9,"Time:",120,9,"AmBOS V2.6c (r) Jan, 07th 1994 by Volker Stepprath"
  3395.    Data 2,24,"Device",57,24,"Update",112,24,"Parent",180,24,"All",227,24,"Clear"
  3396.    Data 369,24,"Device",424,24,"Update",479,24,"Parent",547,24,"All",594,24,"Clear"
  3397. End Proc
  3398. Procedure _KONVERTIEREN[XREM$,XASSOURCE$,XDAT$]
  3399.    On Error Goto _FEHLER
  3400.    If XSD=0 Then A$=XDISKNAMEA$ : B$=XDISKNAMEB$ Else A$=XDISKNAMEB$ : B$=XDISKNAMEA$
  3401.    '
  3402.    N0=-1
  3403.    N$=XFILE$
  3404.    N=Val(Right$(N$,8))
  3405.    _REALNAME[N$]
  3406.    N$=A$+XFILE$
  3407.    '
  3408.    _TXT["Binary data file to read: "+N$-B$]
  3409.    Reserve As Data 7,N
  3410.    If XE Then Pop Proc
  3411.    Bload N$,Start(7)
  3412.    If XE Then Pop Proc
  3413.    '    
  3414.    _TXT[XASSOURCE$]
  3415.    _EINGABE[27]
  3416.    If XFILE$="" Then _TXT["Converting aborted !"] : Pop Proc Else N$=B$+XFILE$
  3417.    '
  3418.    _TXT["[L]ong / [W]ord / [B]yte:"]
  3419.    _EINGABE[27]
  3420.    N0$=Upper$(XFILE$)
  3421.    If N0$="L" Then N0=3
  3422.    If N0$="W" Then N0=1
  3423.    If N0$="B" Then N0=0
  3424.    If N0<0 Then _TXT["Illegal value... converting aborted !"] : Pop Proc
  3425.    If Instr(XDAT$,"DC.") Then XDAT$=XDAT$+N0$+" "
  3426.    '
  3427.    _TXT["# of data items per line:"]
  3428.    _EINGABE[27]
  3429.    N1=Val(XFILE$)
  3430.    If N1=0 Then _TXT["Converting aborted !"] : Pop Proc
  3431.    '    
  3432.    _TXT["Percent converted: 0   %"]
  3433.    '
  3434.    C$=""
  3435.    Open Out 1,N$
  3436.       If XE Then Pop Proc
  3437.       Print #1,XREM$+"*"+Str$(N/(N0+1))+" datas *";
  3438.       For I2=0 To N
  3439.          Text 166,250,Str$(100.0/N*I2)
  3440.          If Mouse Key<>0 Then I2=N : N=0
  3441.          If I2<N
  3442.             If N0=0 : C0$=Hex$(Peek(Start(7)+I2),2) : End If 
  3443.             If N0=1 : C0$=Hex$(Deek(Start(7)+I2),4) : End If 
  3444.             If N0=3 : C0$=Hex$(Leek(Start(7)+I2),8) : End If 
  3445.             C$=C$+C0$+","
  3446.             Add I2,N0
  3447.             Inc I4
  3448.             If I4=N1
  3449.                 Print #1,Chr$(10)+XDAT$+Left$(C$,Len(C$)-1);
  3450.                 C$=""
  3451.                 I4=0
  3452.             End If 
  3453.          End If 
  3454.       Next I2
  3455.       If N
  3456.          Text 174,250,"100"
  3457.          C$=Left$(C$,Len(C$)-1)
  3458.          If C$<>"" and(C$<>"$") : Print #1,Chr$(10)+XDAT$+C$; : End If 
  3459.          Print #1,Chr$(10);
  3460.       Else 
  3461.          _TXT["Converting aborted !"]
  3462.       End If 
  3463.    Close 1
  3464. Pop Proc
  3465. '
  3466. _FEHLER:
  3467.    XE=Errn
  3468.    _ERROR[XE]
  3469.    Resume Next 
  3470. End Proc
  3471. Procedure _KONVERTIERENASCPBK[N]
  3472.    If XSD=0 Then A$=XDISKNAMEA$ : B$=XDISKNAMEB$ Else A$=XDISKNAMEB$ : B$=XDISKNAMEA$
  3473.    On Error Goto _FEHLER
  3474.    '
  3475.    A=Val(Right$(XFILE$,8))
  3476.    _REALNAME[XFILE$]
  3477.    N$=B$+XFILE$
  3478.    '
  3479.    _TXT["Binary data file to read: "+XFILE$]
  3480.    If N=0
  3481.       Reserve As Data 7,A
  3482.       If XE : Pop Proc : End If 
  3483.       Bload N$,Start(7)
  3484.       If XE : Pop Proc : End If 
  3485.    Else 
  3486.       Pload N$,7
  3487.       If XE
  3488.          Pop Proc
  3489.       End If 
  3490.       A=Length(7)
  3491.    End If 
  3492.    '    
  3493.    _TXT["Save as converted source:"]
  3494.    _EINGABE[27]
  3495.    If XFILE$="" Then _TXT["Converting aborted !"] : Pop Proc
  3496.    N$=A$+XFILE$
  3497.    '
  3498.    _TXT["# of data items per line:"]
  3499.    _EINGABE[27]
  3500.    B=Val(XFILE$)
  3501.    If B<=0 Then _TXT["Converting aborted !"] : Pop Proc
  3502.    Dec A
  3503.    Dec B
  3504.    '
  3505.    Open Out 1,N$
  3506.       If XE Then Pop Proc
  3507.       _TXT["Percent converted: 0   %"]
  3508.       Print #1,"Rem *"+Str$(A+1)+" datas *";
  3509.       For I=0 To A
  3510.          N0$=""
  3511.          For I2=0 To B
  3512.             If I+I2<=A
  3513.                N0$=N0$+Str$(Peek(Start(7)+I+I2))+","
  3514.             End If 
  3515.          Next I2
  3516.          Add I,B
  3517.          Text 166,250,Str$(Min(100,100.0/A*(I+I2)))
  3518.          If Mouse Key<>0 : _TXT["Converting aborted !"] : I=A : End If 
  3519.          Print #1,Chr$(10)+"Data "+Left$(N0$,Len(N0$)-1)-" ";
  3520.       Next I
  3521.       Print #1,Chr$(10);
  3522.    Close 1
  3523. Pop Proc
  3524. '
  3525. _FEHLER:
  3526.    XE=Errn
  3527.    _ERROR[XE]
  3528.    Resume Next 
  3529. End Proc
  3530. Procedure _KOPIEREN[N$,N2$]
  3531.    If Upper$(N$)=Upper$(N2$)
  3532.       _TXT["Illegal filename !"]
  3533.       Pop Proc
  3534.    End If 
  3535.    '
  3536.    On Error Goto _FEHLER
  3537.    '
  3538.    Open Out 1,N2$
  3539.       If XE Then Pop Proc
  3540.    Close 1
  3541.    '
  3542.    _TXT["Copying... "+N$]
  3543.    '
  3544.    Reserve As Data 7,10000
  3545.    '
  3546.    N$=N$+Chr$(0)
  3547.    N2$=N2$+Chr$(0)
  3548.    '
  3549.    Dreg(1)=Varptr(N$)
  3550.    Dreg(2)=1005
  3551.    LVOOPENA=Doscall(-30)
  3552.    '
  3553.    Dreg(1)=Varptr(N2$)
  3554.    Dreg(2)=1006
  3555.    LVOOPENB=Doscall(-30)
  3556.    '
  3557.    Repeat 
  3558.       '
  3559.       Dreg(1)=LVOOPENA
  3560.       Dreg(2)=Start(7)
  3561.       Dreg(3)=10000
  3562.       LVOREAD=Doscall(-42)
  3563.       '
  3564.       Dreg(1)=LVOOPENB
  3565.       Dreg(2)=Start(7)
  3566.       Dreg(3)=LVOREAD
  3567.       LVOWRITE=Doscall(-48)
  3568.       '
  3569.    Until LVOREAD<10000
  3570.    '
  3571.    Dreg(1)=LVOOPENA
  3572.    LVOCLOSE=Doscall(-36)
  3573.    '
  3574.    Dreg(1)=LVOOPENB
  3575.    LVOCLOSE=Doscall(-36)
  3576.    '
  3577.    Erase 7
  3578. Pop Proc
  3579. '
  3580. _FEHLER:
  3581.    XE=Errn
  3582.    _ERROR[XE]
  3583.    Resume Next 
  3584. End Proc
  3585. Procedure _LEDONOFF
  3586.    _TXT["Press the SPACE BAR for filter On / Off !"]
  3587.    Repeat 
  3588.       If Inkey$=" "
  3589.          If N=1
  3590.             N=0
  3591.             Led Off 
  3592.          Else 
  3593.             N=1
  3594.             Led On 
  3595.          End If 
  3596.          Clear Key 
  3597.       End If 
  3598.    Until Mouse Key
  3599. End Proc
  3600. Procedure _LESEDISK[N$,N]
  3601.    If N$=Chr$(255) Then Pop Proc
  3602.    If N$="" Then Pop Proc
  3603.    If Exist(N$)=False Then Pop Proc
  3604.    '
  3605.    If N=0
  3606.       For I2=0 To 200
  3607.          XDIRA$(I2)=Chr$(255) : XSTATUSA(I2)=0
  3608.       Next I2
  3609.    Else 
  3610.       For I2=0 To 200
  3611.          XDIRB$(I2)=Chr$(255) : XSTATUSB(I2)=0
  3612.       Next I2
  3613.    End If 
  3614.    '
  3615.    Dir$=N$
  3616.    '
  3617.    XFILE$=Dir First$("")
  3618.    If XFILE$="" Then I=-1
  3619.    Do 
  3620.       If N=0
  3621.          If XFILE$<>"" : XDIRA$(I)=XFILE$ : End If 
  3622.       Else 
  3623.          If XFILE$<>"" : XDIRB$(I)=XFILE$ : End If 
  3624.       End If 
  3625.       XFILE$=Dir Next$
  3626.       If XFILE$="" or I=200 Then Exit Else Inc I
  3627.    Loop 
  3628.    Ink 0
  3629.    If N=0
  3630.       Bar 1,31 To 297,177
  3631.       XANZA#=I : XPOSA=0 : N=0
  3632.       XLENA#=115/Max(1,XANZA#) : XBARA#=Min(115,115/Max(1,XANZA#/18))-XLENA#
  3633.       XDISKNAMEA$=Dir$
  3634.       X09NAME$(X09A)=XDISKNAMEA$
  3635.    Else 
  3636.       Bar 342,31 To 638,177
  3637.       XANZB#=I : XPOSB=0 : N=1
  3638.       XLENB#=115/Max(1,XANZB#) : XBARB#=Min(115,115/Max(1,XANZB#/18))-XLENB#
  3639.       XDISKNAMEB$=Dir$
  3640.       X09NAME$(X09B)=XDISKNAMEB$
  3641.    End If 
  3642.    _MAKENAME[N]
  3643.    _SHOWDIR[N]
  3644.    _SHOWNAME[N]
  3645.    _SCROLLBAR[N]
  3646. End Proc
  3647. Procedure _MAKENAME[N]
  3648.    If N=0
  3649.       X09$(X09A)=""
  3650.       If XDIRA$(0)<>Chr$(255)
  3651.          For I=0 To XANZA#
  3652.             N$=XDIRA$(I)
  3653.             XSTATUSA(I)=0
  3654.             Gosub L001
  3655.             XDIRA$(I)=N$
  3656.             X09$(X09A)=X09$(X09A)+N$
  3657.          Next I
  3658.       End If 
  3659.    Else 
  3660.       X09$(X09B)=""
  3661.       If XDIRB$(0)<>Chr$(255)
  3662.          For I=0 To XANZB#
  3663.             N$=XDIRB$(I)
  3664.             XSTATUSB(I)=0
  3665.             Gosub L001
  3666.             XDIRB$(I)=N$
  3667.             X09$(X09B)=X09$(X09B)+N$
  3668.          Next I
  3669.       End If 
  3670.    End If 
  3671.    Pop Proc
  3672. L001:
  3673.    N2$=Right$(N$,8)
  3674.    N$=N$-N2$
  3675.    N2$=N2$-" "
  3676.    N$=Left$(N$,29)
  3677.    If N2$="" Then N2$="[DIR]" : N$=N$+Space$(29-Len(N$))
  3678.    N2$=Space$(8-Len(N2$))+N2$
  3679.    N$=Right$(N$,Len(N$)-1)
  3680.    N$=Left$(N$,28)+N2$
  3681.    Return 
  3682. End Proc
  3683. Procedure _MEMTIME
  3684.    N$=Str$(Chip Free+Fast Free)
  3685.    Text 36,9,N$
  3686.    '
  3687.    N$=Space$(12)
  3688.    Dreg(1)=Varptr(N$)
  3689.    LVODATESTAMP=Doscall(-192)
  3690.    H=Leek(Varptr(N$)+4)
  3691.    M=H mod 60
  3692.    H=H/60
  3693.    H$=" 00" : Right$(H$,Len(Str$(H))-1)=Str$(H)-" "
  3694.    M$=" 00" : Right$(M$,Len(Str$(M))-1)=Str$(M)-" "
  3695.    Text 590,9,(H$+":"+M$)-" "
  3696.    '
  3697.    Every On 
  3698. End Proc
  3699. Procedure _MENU
  3700.    N=XMENABCD
  3701.    If N<4
  3702.       Restore Chr$(65+N)
  3703.       For I=0 To 7
  3704.          Read N$
  3705.          Ink 0 : Bar I*80+3,196 To I*80+77,206
  3706.          N=Text Length(N$)
  3707.          Ink 1 : Text I*80+40-N/2,204,N$
  3708.       Next I
  3709.       For I=0 To 6
  3710.          Read N$
  3711.          Ink 0 : Bar I*80+3,211 To I*80+77,221
  3712.          N=Text Length(N$)
  3713.          Ink 1 : Text I*80+40-N/2,219,N$
  3714.       Next I
  3715.    Else 
  3716.       For I=0 To 7
  3717.          Ink 0 : Bar I*80+3,196 To I*80+77,206
  3718.          N$=XMEND$(XMENABCD-4,I)
  3719.          If N$<>""
  3720.             N=Instr(N$,"=")
  3721.             N$=Left$(N$,Min(N-1,9))
  3722.             N=Text Length(N$)
  3723.             Ink 2 : Text I*80+40-N/2,204,N$
  3724.          End If 
  3725.       Next I
  3726.       For I=0 To 6
  3727.          Ink 0 : Bar I*80+3,211 To I*80+77,221
  3728.          N$=XMEND$(XMENABCD-4,I+8)
  3729.          If N$<>""
  3730.             N=Instr(N$,"=")
  3731.             N$=Left$(N$,Min(N-1,9))
  3732.             N=Text Length(N$)
  3733.             If I+8<14 : Ink 2 Else Ink 1 : End If 
  3734.             Text I*80+40-N/2,219,N$
  3735.          End If 
  3736.       Next I
  3737.    End If 
  3738. A: Data "COPY","COPY TO","MOVE","MOVE TO","DELETE","MAKE DIR","RENAME","PROTECT"
  3739.    Data "COMMENT","READ","HEX READ","SHOW IFF","EXECUTE","SIZE","INFO"
  3740. B: Data "SORT","MERGE","COMPARE","SAVE MEM","PACK","UNPACK","CHECK VEC","CLEAR SYS"
  3741.    Data "CONV ASM","CONV BAS","CONV ASC","CONV PBK","PLAY ABK","PLAY MED","PLAY MOD"
  3742. C: Data "VALUE","COLOURS","GET DAY","OPEN WB","CLOSE WB","CLOSE","ABOUT","EDITOR"
  3743.    Data "DISKCOPY","FORMAT","VERIFY","INSTALL","BLK DAT","DAT BLK","AMOSTEST"
  3744. D: Data "SET PRT","PRINT","FILEINFO","HJOIN","CLI","EXIT","",""
  3745.    Data "","","","","","","",""
  3746. End Proc
  3747. Procedure _NEWGG[N]
  3748.    If N Then N=367
  3749.    For I=0 To 4 : _G[I*55+N,15,I*55+52+N,27,0] : Next I
  3750. End Proc
  3751. Procedure _NEWMENU
  3752.    N=XMENABCD
  3753.    If N>3 Then Y=1 : Add N,-4
  3754.    For I=0 To 3
  3755.       _G[I*20+561,210,I*20+577,215,0]
  3756.       _G[I*20+561,217,I*20+577,222,0]
  3757.    Next I
  3758.    _G[N*20+561,210+Y*7,N*20+577,215+Y*7,1]
  3759. End Proc
  3760. Procedure _ORDNEN[B$]
  3761.    On Error Goto _FEHLER
  3762.    '
  3763.    FGR=Val(Right$(XFILE$,8))
  3764.    _REALNAME[XFILE$]
  3765.    '
  3766.    Reserve As Data 7,FGR
  3767.    If XE Then Pop Proc
  3768.    Bload B$+XFILE$,7
  3769.    If XE Then Pop Proc
  3770.    '
  3771.    _TXT["Sorting "+XFILE$+" ... !"]
  3772.    For X=0 To FGR
  3773.       F=Hunt(Start(7)+X To Start(7)+FGR,Chr$(10))
  3774.       If F Then Inc I2 : X=F-Start(7)
  3775.    Next X
  3776.    I6#=I2
  3777.    _TXT["Lines..............:"+Str$(I2)]
  3778.    '
  3779.    If I2<1
  3780.       _TXT["Sorry... can`t sort "+FILE$+" !"]
  3781.       Erase 7
  3782.       Pop Proc
  3783.    End If 
  3784.    '
  3785.    Dec I2
  3786.    Dim SF$(I2)
  3787.    For X=0 To I2
  3788.       SF$(X)=Chr$(255)
  3789.    Next X
  3790.    '
  3791.    _TXT["Calculating line...:"+Str$(I5)]
  3792.    For X=0 To FGR
  3793.       F=Hunt(Start(7)+X To Start(7)+FGR,Chr$(10))
  3794.       If F
  3795.          I3=Start(7)+X
  3796.          If Free<1000
  3797.             _ERROR[11]
  3798.             Pop Proc
  3799.          End If 
  3800.          For I4=I3 To F
  3801.             C=Peek(I4) : X$=X$+Chr$(C)
  3802.             If Mouse Key<>0
  3803.                _TXT["Sorting of "+XFILE$+" aborted !"]
  3804.                Pop Proc
  3805.             End If 
  3806.          Next I4
  3807.          X$=X$-Chr$(10)
  3808.          If Len(X$)>0
  3809.             SF$(I5)=X$+Chr$(10)
  3810.             Inc I5
  3811.          End If 
  3812.          X=F-Start(7)
  3813.          X$=""
  3814.          Text 182,250,Str$(I5)
  3815.       End If 
  3816.    Next X
  3817.    '
  3818.    Sort SF$(0)
  3819.    '
  3820.    For X=0 To I2
  3821.       If SF$(X)=Chr$(255) Then Dec I2
  3822.    Next X
  3823.    '
  3824.    _TXT["Lines after sorting:"+Str$(I2+1)]
  3825.    '
  3826.    Open Out 1,B$+XFILE$
  3827.       For I=0 To I2
  3828.          Print #1,SF$(I);
  3829.          SF$(I)=""
  3830.       Next I
  3831.    Close 1
  3832.    '
  3833.    _TXT["Sorting of "+XFILE$+" finished !"]
  3834. Pop Proc
  3835. '
  3836. _FEHLER:
  3837.    XE=Errn
  3838.    _ERROR[XE]
  3839.    Resume Next 
  3840. End Proc
  3841. Procedure _OPTIONOFF
  3842.    For I=0 To 7 : _G[1+I*80,195,(I+1)*80-2,207,0] : Next I
  3843.    For I=0 To 6 : _G[1+I*80,210,(I+1)*80-2,222,0] : Next I
  3844. End Proc
  3845. Procedure _REALNAME[N$]
  3846.    N$=N$-Right$(N$,8)
  3847.    For I=28 To 1 Step -1
  3848.       If Mid$(N$,I,1)<>" " Then N=I : I=1
  3849.    Next I
  3850.    XFILE$=Left$(N$,N)
  3851. End Proc
  3852. Procedure _RUN[N]
  3853.    LVOOPENWORKBENCH=Intcall(-210)
  3854.    Wait Vbl 
  3855.    If N=True
  3856.       Amos To Back 
  3857.       Screen Close 0
  3858.    End If 
  3859.    If Exist("SYS:") Then Dir$="SYS:"
  3860.    XFILE$=XFILE$+Chr$(0)
  3861.    '
  3862.    N2$="*"+Chr$(0)
  3863.    Dreg(1)=Varptr(N2$)
  3864.    Dreg(2)=1006
  3865.    LVOOPEN=Doscall(-30)
  3866.    If LVOOPEN=0
  3867.       N2$="CON:0/0/640/200/PRESS LEFT AMIGA + A TO COME BACK !"+Chr$(0)
  3868.       Dreg(1)=Varptr(N2$)
  3869.       Dreg(2)=1006
  3870.       LVOOPEN=Doscall(-30)
  3871.    End If 
  3872.    '
  3873.    Dreg(1)=Varptr(XFILE$)
  3874.    Dreg(2)=0
  3875.    Dreg(3)=LVOOPEN
  3876.    LVOEXECUTE=Doscall(-222)
  3877.    '
  3878.    If N=True
  3879.       Repeat 
  3880.          Multi Wait 
  3881.       Until Amos Here
  3882.    End If 
  3883.    '
  3884.    Dreg(1)=LVOOPEN
  3885.    LVOCLOSE=Doscall(-36)
  3886.    '
  3887.    If N=True
  3888.       _INSTALLAMBOS
  3889.       _INSTALLSCREEN
  3890.    End If 
  3891. End Proc
  3892. Procedure _TXT[N$]
  3893.    For I=0 To 7
  3894.       Wait Vbl : Scroll 5
  3895.    Next I
  3896.    Text 6,250,"> "+N$
  3897. End Proc
  3898. Procedure _SCROLLBAR[N]
  3899.    If N=0
  3900.       Ink 0 : Bar 306,32 To 312,149
  3901.       XBARPOSA#=XPOSA*XLENA#
  3902.       If XANZA#<18 : XBARA#=148 : XBARPOSA#=0 : End If 
  3903.       Ink 1 : Bar 306,32+XBARPOSA# To 312,Min(148,33+XBARPOSA#+XBARA#)
  3904.    Else 
  3905.       Ink 0 : Bar 327,32 To 333,149
  3906.       XBARPOSB#=XPOSB*XLENB#
  3907.       If XANZB#<18 : XBARB#=148 : XBARPOSB#=0 : End If 
  3908.       Ink 1 : Bar 327,32+XBARPOSB# To 333,Min(148,33+XBARPOSB#+XBARB#)
  3909.    End If 
  3910. End Proc
  3911. Procedure _SCROLLDOWN[N]
  3912.    If N=0
  3913.       If XPOSA>0
  3914.          Dec XPOSA
  3915.          For I=0 To 7 : Scroll 3 : Next I
  3916.          If XSTATUSA(XPOSA)=1 : Ink 2,1 : Else Ink 1,0 : End If 
  3917.          Text 5,39,XDIRA$(XPOSA)
  3918.          _SCROLLBAR[0]
  3919.       End If 
  3920.    Else 
  3921.       If XPOSB>0
  3922.          Dec XPOSB
  3923.          For I=0 To 7 : Scroll 4 : Next I
  3924.          If XSTATUSB(XPOSB)=1 : Ink 2,1 Else Ink 1,0 : End If 
  3925.          Text 346,39,XDIRB$(XPOSB)
  3926.          _SCROLLBAR[1]
  3927.       End If 
  3928.    End If 
  3929. End Proc
  3930. Procedure _SCROLLPAGE[N,Y]
  3931.    If N=0
  3932.       If XBARPOSA#<Y-32
  3933.          For I=1 To 17 : _SCROLLUP[0] : Next I
  3934.       Else 
  3935.          For I=1 To 17 : _SCROLLDOWN[0] : Next I
  3936.       End If 
  3937.    Else 
  3938.       If XBARPOSB#<Y-32
  3939.          For I=1 To 17 : _SCROLLUP[1] : Next I
  3940.       Else 
  3941.          For I=1 To 17 : _SCROLLDOWN[1] : Next I
  3942.       End If 
  3943.    End If 
  3944. End Proc
  3945. Procedure _SCROLLTOPBUTTOM[N,MK]
  3946.    If N=0
  3947.       If MK=1 : XPOSA=0 Else XPOSA=Max(0,XANZA#-17) : End If 
  3948.       _SCROLLBAR[0]
  3949.       _SHOWDIR[0]
  3950.    Else 
  3951.       If MK=1 : XPOSB=0 Else XPOSB=Max(0,XANZB#-17) : End If 
  3952.       _SCROLLBAR[1]
  3953.       _SHOWDIR[1]
  3954.    End If 
  3955. End Proc
  3956. Procedure _SCROLLUP[N]
  3957.    If N=0
  3958.       If XPOSA+17<200 and XPOSA+17<XANZA#
  3959.          Inc XPOSA
  3960.          For I=0 To 7 : Scroll 1 : Next I
  3961.          If XSTATUSA(XPOSA+17)=1 : Ink 2,1 Else Ink 1,0 : End If 
  3962.          Text 5,175,XDIRA$(XPOSA+17)
  3963.         _SCROLLBAR[0]
  3964.       End If 
  3965.    Else 
  3966.       If XPOSB+17<200 and XPOSB+17<XANZB#
  3967.          Inc XPOSB
  3968.          For I=0 To 7 : Scroll 2 : Next I
  3969.          If XSTATUSB(XPOSB+17)=1 : Ink 2,1 Else Ink 1,0 : End If 
  3970.          Text 346,175,XDIRB$(XPOSB+17)
  3971.          _SCROLLBAR[1]
  3972.       End If 
  3973.    End If 
  3974. End Proc
  3975. Procedure _SELEKTION[N,MK,Y]
  3976.    Y=(Y-32)/8
  3977.    If N=0
  3978.       If XSTATUSA(Y+XPOSA)=-2
  3979.          Ink 2,1 : Text 6,39+Y*8,XDIRA$(Y+XPOSA)+Space$(36-Len(XDIRA$(Y+XPOSA)))
  3980.          _LESEDISK[XDIRA$(Y+XPOSA),0]
  3981.          Pop Proc
  3982.       End If 
  3983.       If XSTATUSA(Y+XPOSA)=0
  3984.          XSTATUSA(Y+XPOSA)=1
  3985.       Else 
  3986.          XSTATUSA(Y+XPOSA)=0
  3987.       End If 
  3988.       _SHOWDIR[0]
  3989.       If MK=2 and(Right$(XDIRA$(Y+XPOSA),5)="[DIR]")
  3990.          N$=XDIRA$(Y+XPOSA)
  3991.          Gosub L002
  3992.          N$=XDISKNAMEA$+N$
  3993.          _LESEDISK[N$,0]
  3994.       End If 
  3995.    Else 
  3996.       If XSTATUSB(Y+XPOSB)=-2
  3997.          Ink 2,1 : Text 346,39+Y*8,XDIRB$(Y+XPOSB)+Space$(36-Len(XDIRB$(Y+XPOSB)))
  3998.          _LESEDISK[XDIRB$(Y+XPOSB),1]
  3999.          Pop Proc
  4000.       End If 
  4001.       If XSTATUSB(Y+XPOSB)=0
  4002.          XSTATUSB(Y+XPOSB)=1
  4003.       Else 
  4004.          XSTATUSB(Y+XPOSB)=0
  4005.       End If 
  4006.       _SHOWDIR[1]
  4007.       If MK=2 and(Right$(XDIRB$(Y+XPOSB),5)="[DIR]")
  4008.          N$=XDIRB$(Y+XPOSB)
  4009.          Gosub L002
  4010.          N$=XDISKNAMEB$+N$
  4011.          _LESEDISK[N$,1]
  4012.       End If 
  4013.    End If 
  4014. Pop Proc
  4015. '
  4016. L002:
  4017.    N$=Left$(N$,31)
  4018.    N=30
  4019.    For I=29 To 1 Step -1
  4020.       If Mid$(N$,I,1)=" " Then Dec N Else I=1
  4021.    Next I
  4022.    N$=Left$(N$,N-1)
  4023. Return 
  4024. End Proc
  4025. Procedure _SHOWDIR[N]
  4026.    If N=0
  4027.       If XDIRA$(0)=Chr$(255) : Pop Proc : End If 
  4028.       For I=0 To 17
  4029.          If XSTATUSA(I+XPOSA)=1 : Ink 2,1 Else Ink 1,0 : End If 
  4030.          If I+XPOSA<=XANZA# : Text 5,39+I*8,XDIRA$(I+XPOSA) : End If 
  4031.       Next I
  4032.    Else 
  4033.       If XDIRB$(0)=Chr$(255) : Pop Proc : End If 
  4034.       For I=0 To 17
  4035.          If XSTATUSB(I+XPOSB)=1 : Ink 2,1 Else Ink 1,0 : End If 
  4036.          If I+XPOSB<=XANZB# : Text 346,39+I*8,XDIRB$(I+XPOSB) : End If 
  4037.       Next I
  4038.    End If 
  4039. End Proc
  4040. Procedure _SHOWNAME[N]
  4041.    Ink 1,0
  4042.    If N=0
  4043.       Text 5,188,Space$(36) : Text 5,188,Left$(XDISKNAMEA$,36)
  4044.    Else 
  4045.       Text 346,188,Space$(36) : Text 346,188,Left$(XDISKNAMEB$,36)
  4046.    End If 
  4047. End Proc
  4048. Procedure _SOURCEDEST
  4049.    Add XSD,1,0 To 1
  4050.    Get Block 1,302,16,36,10,1
  4051.    Ink 0 : Bar 302,16 To 337,26
  4052.    Hrev Block 1
  4053.    Put Block 1,288,16
  4054.    Del Block 1
  4055.    Wait 5
  4056. End Proc
  4057. Procedure _X09AB[N]
  4058.    If N=0
  4059.       XANZA#=Max(0,Len(X09$(X09A))/36-1) : XPOSA=0
  4060.       XLENA#=115/Max(1,XANZA#) : XBARA#=Min(115,115/Max(1,XANZA#/18))-XLENA#
  4061.       For I=0 To 200
  4062.          XDIRA$(I)=Chr$(255)
  4063.          XSTATUSA(I)=0
  4064.       Next I
  4065.       For I=0 To XANZA#
  4066.          N$=Mid$(X09$(X09A),I*36+1,36)
  4067.          XDIRA$(I)=N$
  4068.       Next I
  4069.       XDISKNAMEA$=X09NAME$(X09A)
  4070.       Ink 0 : Bar 1,31 To 297,177
  4071.       _SHOWDIR[0]
  4072.       _SHOWNAME[0]
  4073.       Ink 2,0 : Text 283,24,Str$(X09A)-" "
  4074.    Else 
  4075.       XANZB#=Max(0,Len(X09$(X09B))/36-1) : XPOSB=0
  4076.       XLENB#=115/Max(1,XANZB#) : XBARB#=Min(115,115/Max(1,XANZB#/18))-XLENB#
  4077.       For I=0 To 200
  4078.          XDIRB$(I)=Chr$(255)
  4079.          XSTATUSB(I)=0
  4080.       Next I
  4081.       For I=0 To XANZB#
  4082.          N$=Mid$(X09$(X09B),I*36+1,36)
  4083.          XDIRB$(I)=N$
  4084.       Next I
  4085.       XDISKNAMEB$=X09NAME$(X09B)
  4086.       Ink 0 : Bar 342,31 To 638,177
  4087.       _SHOWDIR[1]
  4088.       _SHOWNAME[1]
  4089.       Ink 2,0 : Text 349,24,Str$(X09B)-" "
  4090.    End If 
  4091. End Proc